RetroShare/rsctrl/src/definition/chat.proto
drbob e833fd1aaa Updated protobuf definitions to include ChatHistory,
added YOURSELF to friends options,
Improved Search Results Interface.



git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.5-rpc-b1@6136 b45a01b8-16f6-495d-af2f-9b41ad6348cc
2013-02-22 20:51:24 +00:00

246 lines
5.4 KiB
Protocol Buffer

package rsctrl.chat;
import "core.proto";
///////////////////////////////////////////////////////////////
// Private, Group and Chat Lobby RPC.
//
// OTHER COMMANDS TO ADD?
// Status Strings.
// Invite Friends to Private Lobbies.
// Chat History.
// ???
///////////////////////////////////////////////////////////////
enum RequestMsgIds {
MsgId_RequestChatLobbies = 1;
MsgId_RequestCreateLobby = 2;
MsgId_RequestJoinOrLeaveLobby = 3;
MsgId_RequestSetLobbyNickname = 4;
MsgId_RequestRegisterEvents = 5;
MsgId_RequestSendMessage = 6;
MsgId_RequestChatHistory = 7;
}
enum ResponseMsgIds {
// STANDARD RESPONSES.
MsgId_ResponseChatLobbies = 1;
MsgId_ResponseSetLobbyNickname = 4;
MsgId_ResponseRegisterEvents = 5;
MsgId_ResponseSendMessage = 6;
MsgId_ResponseChatHistory = 7;
// EVENTS
MsgId_EventLobbyInvite = 101;
MsgId_EventChatMessage = 102;
}
///////////////////////////////////////////////////////////////
// BUILDING BLOCKS.
// This is a combination of ChatLobbyInfo & PublicChatLobbyRecord.
// Which seem very similar??
enum LobbyPrivacyLevel {
PRIVACY_PRIVATE = 1;
PRIVACY_PUBLIC = 2;
}
enum ChatType {
TYPE_PRIVATE = 1;
TYPE_LOBBY = 2;
TYPE_GROUP = 3;
}
message ChatLobbyInfo {
required string lobby_id = 1;
required string lobby_topic = 2;
required string lobby_name = 3;
required string lobby_nickname = 4; // empty for none set.
enum LobbyState {
LOBBYSTATE_JOINED = 1;
LOBBYSTATE_INVITED = 2;
LOBBYSTATE_VISIBLE = 3;
}
required LobbyPrivacyLevel privacy_level = 5;
required LobbyState lobby_state = 6;
required uint32 no_peers = 7;
required uint32 last_report_time = 8;
required uint32 last_activity = 9;
repeated string participating_friends = 10; // SSL_IDS?
repeated string nicknames = 11;
}
message ChatId {
required ChatType chat_type = 1;
required string chat_id = 2;
}
message ChatMessage {
required ChatId id = 1;
required string msg = 2;
optional string peer_nickname = 3;
optional uint32 chat_flags = 4;
optional uint32 send_time = 5;
optional uint32 recv_time = 6;
}
// RESPONSE: ResponseChatLobbies
// This is a generic Response - used often.
// lobbies, will contain a list of affected / requested Lobbies.
message ResponseChatLobbies {
required rsctrl.core.Status status = 1;
repeated ChatLobbyInfo lobbies = 2;
}
///////////////////////////////////////////////////////////////
// REQUEST: RequestChatLobbies
message RequestChatLobbies {
enum LobbySet {
LOBBYSET_ALL = 1;
LOBBYSET_JOINED = 2;
LOBBYSET_INVITED = 3;
LOBBYSET_VISIBLE = 4;
}
required LobbySet lobby_set = 1;
}
// RESPONSE: ResponseChatLobbies
///////////////////////////////////////////////////////////////
// REQUEST: RequestCreateLobby
message RequestCreateLobby {
required string lobby_name = 1;
required string lobby_topic = 2;
required LobbyPrivacyLevel privacy_level = 4;
repeated string invited_friends = 3; // SSL_IDS
}
// RESPONSE: ResponseChatLobbies
///////////////////////////////////////////////////////////////
// Accept / Deny Invite, Join / Leave Lobby (these can be combined?)
// REQUEST: RequestJoinOrLeaveLobby
message RequestJoinOrLeaveLobby {
enum LobbyAction {
JOIN_OR_ACCEPT = 1;
LEAVE_OR_DENY = 2;
}
required string lobby_id = 1;
required LobbyAction action = 2;
}
// RESPONSE: ResponseChatLobbies
///////////////////////////////////////////////////////////////
// Set Nickname.
// Get is done via requesting ChatLobby Info.
// Empty lobby_ids => default Nickname.
// REQUEST: RequestSetLobbyNickname
message RequestSetLobbyNickname {
required string nickname = 1;
repeated string lobby_ids = 2;
}
// RESPONSE: ResponseSetLobbyNickname
// Didnt think the whole Lobby status was necessary.
message ResponseSetLobbyNickname {
required rsctrl.core.Status status = 1;
}
///////////////////////////////////////////////////////////////
// Request Chat Events.
// This is done by registering for events.
// REQUEST: RequestRegisterEvents
message RequestRegisterEvents {
enum RegisterAction {
REGISTER = 1;
DEREGISTER = 2;
}
required RegisterAction action = 1;
}
// RESPONSE: ResponseRegisterEvents
message ResponseRegisterEvents {
required rsctrl.core.Status status = 1;
}
// RESPONSE: EventLobbyInvite
message EventLobbyInvite {
required ChatLobbyInfo lobby = 1;
}
// RESPONSE: EventChatMessage
message EventChatMessage {
required ChatMessage msg = 1;
}
///////////////////////////////////////////////////////////////
// Send Message.
// REQUEST: RequestSendMessage
message RequestSendMessage {
required ChatMessage msg = 1;
}
// RESPONSE: ResponseSendMessage
message ResponseSendMessage {
required rsctrl.core.Status status = 1;
}
///////////////////////////////////////////////////////////////
// Chat History.
// INITIALLY THIS WILL ONLY WORK WITH PRIVATE CHATS.
// NEED TO EXTEND INTERNALS TO HANDLE LOBBIES.
// REQUEST: RequestChatHistory
message RequestChatHistory {
required ChatId id = 1; /* lobby or chat, group id */
}
// RESPONSE: ResponseChatHistory
message ResponseChatHistory {
required rsctrl.core.Status status = 1;
required ChatId id = 2; /* lobby or chat, group id */
repeated ChatMessage msgs = 3;
}
///////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////