CVE Network Protocol: Working Draft

Where to Start

Examples

These examples are intended to give you the flavor of what we are doing. This list is not complete nor is it written in stone. Some of these items are really local client commands, not network protocol commands. For each command we need to ask: does it need to go the server? and then: which client(s) should the server forward it on to? and then: does it require a reply, and if so, from whom? Lastly: for each command, does it require that the server remember the state change and store it in a database?

Every command can be abbreviated by a unique prefix. Common commands can be abbreviated with nonunique prefixes. Each client avatar has a current default command which executes for lines not beginning with \.

Chatting

Example Description
\say hello chats to the current room
\tell joe hello chats to a specific person
\tell groupname hello chats to a specific group
\tell sessionname hello chats to a specific session
\group hello chats to the current group
\sig hello chats to the current special interest group
\course hello chats to the current course
\emote a supposedly non-verbal

Establishing groups

There are groups (temporary membership, current-session oriented), sigs (persistent membership), and courses (persistent membership, extra structure and permissions)
Example Description
\invite invite (currently selected person) to join group
\disband disband current group
\groups list my groups
\lsgroups list all groups
\makesig unicon create a special interest group
\makecourse cs371 create a course
\sig=unicon sets the current/default special interest group you are sending to
\unicon sends a message to any sig by name
\join unicon join (subscribe to listen) a sig
\course cs371 sets the current course you are sending to
\ignore joe discard all messages from user joe
A discussion on 12/19/05 produced the following
Example Description
\createsession sessiontype sessionname create a (temporary) group
\createsession sessionname sessionid server assigns id to created (temporary) group
\destroysession sessionname destroy a (temporary) group
\subsession sessiontype sessionname create a subgroup
\invite sessionname username(s) client invites user(s) to join group
\invite sessiontype sessionname server forwards invitation to user(s) to join group
\join sessionname accept membership
\decline sessionname decline membership
\leave sessionname exit membership
\dismiss sessionname username kick someone out
\listsessions client requests
\listsessions ssnname, ssntype, ssnname, ssntype, ... server responds
\listmembers sessionname
\requestcontrol sessionname
\releasecontrol sessionname
\givecontrol sessionname username

Avatar and environment manipulation

Example Description
\move 0,0,3.5 move to (x,y,z)
\look get a 2D detailed look at nearest 2D object
\look board get a 2D detailed look at the nearest whiteboard
\look screen get a 2D detailed look at the nearest PC screen
\look up go back to 3D view
\look 0,0,3.5 (turn and) look at (x,y,z)
\move sh371 move (teleport) to sh371
\pen red set the current pen to red
\whiteboard sh118b-a set/lock the current whiteboard to sh118b-a
\draw 50,50 set (x,y) on the nearest board to current pen color
\drawline 50,50,55,30 draw line from (x,y)-(x2,y2) on the nearest board to current pen color
\fillrectangle 50,50,10,10 fill rectangle from (x,y) with (width,height) on the nearest board to current pen color
\erase erase the nearest board
\door toggle nearest door more open or closed
\hand toggle (raise/lower) hand
\follow follow the currently targeted user
\voice [on off] enable disable realtime microphone
\sound [on off] enable disable realtime speaker
\video [on off] enable disable realtime videocamera feed

File Transfer

Example Description
\putfile dat/avatars/curtis.avt 206 dat/avatars/curtis.avt is the file to upload, and it is 206 bytes. Immediately after the newline (after the 6) the actual contents of the file (ASCII or binary; use writes()/reads() for no newline-handling) would be sent.
\getfile dat/avatars/curtis.avt this asks the server to execute a \putfile
Issues:

Miscellaneous

Example Description
\quit! exits immediately
\exit exits with a grace period
\afk marks you as away from keyboard
\who show who is on the system
\loc shows your current location
\log [on off] turns on/off your private recorder
\cmd say sets the default command to \say

Teacher/lecture tasks

Example Description
\give joe pen give joe permission to draw on the board
\give joe voice give joe permission to speak
\give joe legs give joe permission to move
\take joe ... remove students' specific permissions
\stop joe remove all of joe's permissions, he is paralyzed

Administrator tasks

Example Description
\enroll joe cs371 adds joe to a class
\kill joe dumps joe out of the application
\lock joe prevents joe from logging in any more

Collaborative IDE and Browser Protocol

Issues: