OpenContinue Packet
Overview
The OpenContinue packet is used for connecting, disconnecting, keeping a
connection alive, and tracking information about participants. [Windows:
Connections are kept alive by sending an OpenContinue packet every 2 seconds.
If you don't receive an OpenContinue packet for 60 seconds, the connection
has timed out. Mac: An OpenContinue packet is sent every 3 seconds if nothing
else has been sent during the last 3 seconds; and OpenContinue packet is sent every
5 seconds if no OpenContinue packet was sent in the last 5 seconds. If no
packets have been received for 60 seconds, the connection has timed out.]
Packet Format
0 8 16 24 31
+--------------+--------------+--------------+--------------+
| CU-SeeMe Header |
| (26 bytes) |
| ... |
| +--------------+--------------+
| | Client Count |
+--------------+--------------+--------------+--------------+
1Ch | OpenContinue Sequence Number |
+--------------+--------------+--------------+--------------+
20h | |
| |
| User Name (20 bytes) |
| |
| |
+--------------+--------------+--------------+--------------+
34h | Send Mode | Receive Mode | Flags | Version |
+--------------+--------------+--------------+--------------+
38h | Client Info array |
| ..... |
+--------------+--------------+--------------+--------------+
00h - CU-SeeMe Header
(26 bytes)
1Ah - Client Count (2 bytes - unsigned integer)
Number of participants in conference. There is 1 CLIENTINFO structure for
each participant, excluding yourself.
1Ch - OpenContinue Sequence Number (4 bytes - unsigned
integer)
Indicates whether this OpenContinue packet should be processed. If the sequence
number is greater than the previously saved sequence number, process this
OpenContinue packet and save it's sequence number. This allows packets which
arrive out of order to be ignored. OpenContinue packets which arrive with
the same sequence number are not processed, which means the contents of
the current OpenContinue packet does not differ from the previous one. The exception to this rule is: Packet Loss fields in Client Info structures
and any OpenContinue Packet Extensions are always processed regardless of
sequence number.
20h - User Name (20 bytes)
User name. This is not a null terminated C string, but is instead stored
with the first byte indicating the length of the string, followed by actual
string itself; making the maximum length of the actual string 19 characters.
34h - Send Mode (1 byte)
Values:
0x00 - this participant will not send video
0x01 - this participant is willing to send small video (160x120)
0x02 - this participant is willing to send big video (240x320)
0x80 - this participant is willing to send White Pine's color video
35h - Receive Mode (1 byte)
Values:
0 - this participant does not want to receive video.
1 - this participant wants to receive video
36h - Flags (1 byte) - Specify various Boolean state that
applies to all clients
Values:
0x01 - user wants is willing to receive audio
0x02 - user is capable of transmitting audio
0x04 - wants audio from lurkers
0x08 - specifies this is a Windows machine (otherwise is a Mac)
0x10 - I am sending private audio with Destination Address
0x20 - send version information
37h - Version (1 byte)
Protocol version number
38h - Client Info array.
Tracks participants and their options. There is 1 CLIENTINFO "structure"
for each participant in a conference, excluding yourself. That is, if there
are 3 participants in a conference (counting yourself as one of the participants),
you would use an "array" of 2 CLIENTINFO structures. Note: no
CLIENTINFO structures are used in an OpenContinue packet when making a new
connection.
0 8 16 24 31
+--------------+--------------+--------------+--------------+
| IP Address of this participant |
+--------------+--------------+--------------+--------------+
| Flags |Aux Data Prune| I Will Recv | I Will Send |
+--------------+--------------+--------------+--------------+
| Packets sent | Packets expected |
+--------------+--------------+--------------+--------------+
IP Address of this participant (4 bytes) - just like it sounds.
Flags (1 byte) - Specify various Boolean states with respect to a
particular client.
Values:
0x01 - update video - used by reflector to optimize "list maintenance"
0x02 - update audio - used by reflector to optimize "list maintenance"
0x04 - I will receive audio
0x08 - update AuxData
Aux Data Prune (1 byte)
Bitfield to specify which types of Aux Data are desired.
I Will Recv (1 byte)
Values:
0 - I do not want to receive video from this participant
1 - I do want to receive video from this participant
I Will Send (1 byte) - This participant wants to send video.
Values:
0 - this participant down not want to send video
1 - this participant wants to send video
Packets Expected (2 bytes - unsigned integer)
Number of packets sent to me since last OpenContinue packet was sent. Used
to calculate end-to-end packet loss for informative display.
Packets Received (2 bytes - unsigned integer)
Number of packets received since last OpenContinue packet was sent. Used
to calculate end-to-end packet loss for informative display