newipc3 branch

Owner: Arthur

Prupose: Integrate the message passing system from marvin.

Status

Refer to ticker #14

Message passing infrastructure is now in place. So now we have to determine what messages to send exactly.

Outgoing Message Types

Discussions we need to have, roughly in order of importance

  • Login

We really need to authenticate ourselves with the server so it know whos on the end of the socket.

CMD
<login id="foo">
 <authtype>plain</authtype>
 <username>foo</username>
 <password>wibble</password>
</login>

Perhaps later we can add a more secure authtype, use PKI for example.

  • Send message to room
    <msg id="foo">
     <room>0</room>
     <type>emote</type>
     <text>Hi there folks</text>
    </msg>
    

with types of: plain, emote, raw. no need to specify username as the server already knows.

  • Send message to username
    <msg id="foo">
     <user>fred</user>
     <type>emote</type>
     <text>Boo!</text>
    </msg>
    

Pretty much the same as send to room only we specify a target user instead.

  • Join Room
  • Leave Room
    <channel id="foo">
     <enter>1</enter>
     <leave>0</leave>
    </channel>
    

This will allow users to enter multiple rooms, if we code the server to allow this.

  • Logout

Incoming Message Types

  • Users saying / doing things
    <msg id="foo">
     <uid>1337</uid>
     <sender>fred</sender>
     <channel>0</channel>
     <type>plain</type>
     <text>Hello folks</text>
    </msg>
    
  • uid - the actual user identity
  • sender - the users current visible name (we may like to make this changable)
  • channel - channel it was said on
  • type - plain/emote/raw
  • text - the body of the message.
  • User entering / leaving channels
  • Actions to apply