[enet-cvs] CVS: enet/include/enet enet.h,1.2,1.3 protocol.h,1.2,1.3

ENet CVS enet-discuss@lists.puremagic.com
Fri, 7 Jun 2002 20:36:22 -0600


Update of /home/enet/cvsroot/enet/include/enet
In directory sferik:/tmp/cvs-serv1180/include/enet

Modified Files:
	enet.h protocol.h 
Log Message:
Throttle changes, channels, bug fixes, etc.



Index: enet.h
===================================================================
RCS file: /home/enet/cvsroot/enet/include/enet/enet.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- enet.h	2002/02/10 22:25:00	1.2
+++ enet.h	2002/06/08 02:36:20	1.3
@@ -20,6 +20,12 @@
 
 typedef enum
 {
+   ENET_SOCKET_TYPE_STREAM   = 1,
+   ENET_SOCKET_TYPE_DATAGRAM = 2
+} ENetSocketType;
+
+typedef enum
+{
    ENET_SOCKET_WAIT_NONE    = 0,
    ENET_SOCKET_WAIT_SEND    = (1 << 0),
    ENET_SOCKET_WAIT_RECEIVE = (1 << 1)
@@ -49,6 +55,13 @@
    size_t               dataLength;
 } ENetPacket;
 
+typedef struct _ENetAcknowledgement
+{
+   ENetListNode acknowledgementList;
+   uint32       sentTime;
+   ENetProtocol command;
+} ENetAcknowledgement;
+
 typedef struct _ENetOutgoingCommand
 {
    ENetListNode outgoingCommandList;
@@ -68,8 +81,6 @@
    ENetListNode incomingCommandList;
    uint32       reliableSequenceNumber;
    uint32       unreliableSequenceNumber;
-   uint32       sentTime;
-   int          acknowledged;
    ENetProtocol command;
    uint32       fragmentCount;
    uint32       fragmentsRemaining;
@@ -79,35 +90,60 @@
 
 typedef enum
 {
-   ENET_PEER_STATE_DISCONNECTED  = 0,
-   ENET_PEER_STATE_CONNECTING    = 1,
-   ENET_PEER_STATE_CONNECTED     = 2,
-   ENET_PEER_STATE_DISCONNECTING = 3
+   ENET_PEER_STATE_DISCONNECTED                = 0,
+   ENET_PEER_STATE_CONNECTING                  = 1,
+   ENET_PEER_STATE_CONNECTED                   = 2,
+   ENET_PEER_STATE_DISCONNECTING               = 3,
+   ENET_PEER_STATE_ACKNOWLEDGING_DISCONNECTION = 4,
+   ENET_PEER_STATE_ZOMBIE                      = 5
 } ENetPeerState;
 
 enum
 {
    ENET_HOST_RECEIVE_BUFFER_SIZE          = 256 * 1024,
+   ENET_HOST_BANDWIDTH_THROTTLE_EPOCH     = 1000,
 
    ENET_PEER_DEFAULT_ROUND_TRIP_TIME      = 500,
-   ENET_PEER_DEFAULT_PACKET_THROTTLE      = 0,
-   ENET_PEER_PACKET_THROTTLE_SCALE        = 16,
-   ENET_PEER_PACKET_THROTTLE_DECELERATION = 1,
-   ENET_PEER_PACKET_THROTTLE_ACCELERATION = 1,
+   ENET_PEER_DEFAULT_PACKET_THROTTLE      = 32,
+   ENET_PEER_PACKET_THROTTLE_SCALE        = 32,
+   ENET_PEER_PACKET_THROTTLE_COUNTER      = 7, 
+   ENET_PEER_PACKET_THROTTLE_ACCELERATION = 7,
+   ENET_PEER_PACKET_THROTTLE_DECELERATION = 2,
+   ENET_PEER_PACKET_THROTTLE_EPOCH        = 30000,
    ENET_PEER_PACKET_LOSS_SCALE            = (1 << 16),
-   ENET_PEER_PACKET_LOSS_EPOCH            = 1000,
+   ENET_PEER_PACKET_LOSS_EPOCH            = 30000,
+   ENET_PEER_WINDOW_SIZE_SCALE            = 64 * 1024,
    ENET_PEER_TIMEOUT_LIMIT                = 64,
-   ENET_PEER_PING_INTERVAL                = 5000
+   ENET_PEER_PING_INTERVAL                = 500
 };
 
+typedef struct _ENetChannel
+{
+   uint32   outgoingReliableSequenceNumber;
+   uint32   outgoingUnreliableSequenceNumber;
+   uint32   incomingReliableSequenceNumber;
+   uint32   incomingUnreliableSequenceNumber;
+   ENetList incomingReliableCommands;
+   ENetList incomingUnreliableCommands;
+} ENetChannel;
+
 typedef struct _ENetPeer
 { 
+   struct _ENetHost * host;
    uint16        outgoingPeerID;
    uint16        incomingPeerID;
    uint32        challenge;
    ENetAddress   address;
    void *        data;
    ENetPeerState state;
+   ENetChannel * channels;
+   size_t        channelCount;
+   uint32        incomingBandwidth;
+   uint32        outgoingBandwidth;
+   uint32        incomingBandwidthThrottleEpoch;
+   uint32        outgoingBandwidthThrottleEpoch;
+   uint32        incomingDataTotal;
+   uint32        outgoingDataTotal;
    uint32        lastSendTime;
    uint32        lastReceiveTime;
    uint32        nextTimeout;
@@ -117,27 +153,31 @@
    uint32        packetLoss;
    uint32        packetLossVariance;
    uint32        packetThrottle;
+   uint32        packetThrottleLimit;
+   uint32        packetThrottleCounter;
+   uint32        packetThrottleEpoch;
+   uint32        bestRoundTripTime;
    uint32        roundTripTime;
    uint32        roundTripTimeVariance;
    uint16        packetSize;
    uint32        windowSize;
    uint32        reliableDataInTransit;
-   uint32        sentUnreliableSequenceNumber;
    uint32        outgoingReliableSequenceNumber;
-   uint32        outgoingUnreliableSequenceNumber;
-   uint32        incomingReliableSequenceNumber;
-   uint32        incomingUnreliableSequenceNumber;
+   ENetList      acknowledgements;
    ENetList      sentReliableCommands;
+   ENetList      sentUnreliableCommands;
    ENetList      outgoingReliableCommands;
    ENetList      outgoingUnreliableCommands;
-   ENetList      incomingReliableCommands;
-   ENetList      incomingUnreliableCommands;
 } ENetPeer;
 
 typedef struct _ENetHost
 {
    ENetSocket         socket;
    ENetAddress        address;
+   uint32             incomingBandwidth;
+   uint32             outgoingBandwidth;
+   uint32             bandwidthThrottleEpoch;
+   int                recalculateBandwidthLimits;
    ENetPeer *         peers;
    size_t             peerCount;
    ENetPeer *         lastServicedPeer;
@@ -163,6 +203,7 @@
 {
    ENetEventType        type;
    ENetPeer *           peer;
+   uint8                channelID;
    ENetPacket *         packet;
 } ENetEvent;
 
@@ -172,7 +213,9 @@
 extern uint32 enet_time_get (void);
 extern void enet_time_set (uint32);
 
-extern ENetSocket enet_socket_create (const ENetAddress *);
+extern ENetSocket enet_socket_create (ENetSocketType, const ENetAddress *);
+extern ENetSocket enet_socket_accept (ENetSocket, ENetAddress *);
+extern int enet_socket_connect (ENetSocket, const ENetAddress *);
 extern int enet_socket_send (ENetSocket, const ENetAddress *, const ENetBuffer *, size_t);
 extern int enet_socket_receive (ENetSocket, ENetAddress *, ENetBuffer *, size_t);
 extern int enet_socket_wait (ENetSocket, uint32 *, uint32);
@@ -185,18 +228,24 @@
 extern void enet_packet_destroy (ENetPacket *);
 extern int enet_packet_resize  (ENetPacket *, size_t);
 
-extern ENetHost * enet_host_create (const ENetAddress *, size_t);
+extern ENetHost * enet_host_create (const ENetAddress *, size_t, uint32, uint32);
 extern void enet_host_destroy (ENetHost *);
-extern ENetPeer * enet_host_connect (ENetHost *, const ENetAddress *);
+extern ENetPeer * enet_host_connect (ENetHost *, const ENetAddress *, size_t);
 extern int enet_host_service (ENetHost *, ENetEvent *, uint32);
 extern void enet_host_flush (ENetHost *);
-extern void enet_host_broadcast (ENetHost *, ENetPacket *);
+extern void enet_host_broadcast (ENetHost *, uint8, ENetPacket *);
+extern void enet_host_bandwidth_limit (ENetHost *, uint32, uint32);
+extern void enet_host_bandwidth_throttle (ENetHost *);
 
-extern int enet_peer_send (ENetPeer *, ENetPacket *);
-extern ENetPacket * enet_peer_receive (ENetPeer *);
+extern int enet_peer_send (ENetPeer *, uint8, ENetPacket *);
+extern ENetPacket * enet_peer_receive (ENetPeer *, uint8);
 extern void enet_peer_ping (ENetPeer *);
 extern void enet_peer_reset (ENetPeer *);
 extern void enet_peer_disconnect (ENetPeer *);
+extern int enet_peer_throttle (ENetPeer *, uint32, uint32, uint32);
+extern ENetOutgoingCommand * enet_peer_queue_outgoing_command (ENetPeer *, const ENetProtocol *, ENetPacket *, uint32, uint16);
+extern ENetIncomingCommand * enet_peer_queue_incoming_command (ENetPeer *, const ENetProtocol *, ENetPacket *, uint32);
+extern ENetAcknowledgement * enet_peer_queue_acknowledgement (ENetPeer *, const ENetProtocol *, uint32);
 
 #ifdef __cplusplus
 }

Index: protocol.h
===================================================================
RCS file: /home/enet/cvsroot/enet/include/enet/protocol.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- protocol.h	2002/02/10 22:25:00	1.2
+++ protocol.h	2002/06/08 02:36:20	1.3
@@ -9,7 +9,9 @@
    ENET_PROTOCOL_MAXIMUM_PACKET_SIZE     = 4096,
    ENET_PROTOCOL_MAXIMUM_PACKET_COMMANDS = 32,
    ENET_PROTOCOL_MINIMUM_WINDOW_SIZE     = 4096,
-   ENET_PROTOCOL_MAXIMUM_WINDOW_SIZE     = 32768
+   ENET_PROTOCOL_MAXIMUM_WINDOW_SIZE     = 32768,
+   ENET_PROTOCOL_MINIMUM_CHANNEL_COUNT   = 1,
+   ENET_PROTOCOL_MAXIMUM_CHANNEL_COUNT   = 255
 };
 
 typedef enum
@@ -22,7 +24,8 @@
    ENET_PROTOCOL_COMMAND_PING              = 5,
    ENET_PROTOCOL_COMMAND_SEND_RELIABLE     = 6,
    ENET_PROTOCOL_COMMAND_SEND_UNRELIABLE   = 7,
-   ENET_PROTOCOL_COMMAND_SEND_FRAGMENT     = 8
+   ENET_PROTOCOL_COMMAND_SEND_FRAGMENT     = 8,
+   ENET_PROTOCOL_COMMAND_BANDWIDTH_LIMIT   = 9
 } ENetProtocolCommand;
 
 typedef enum
@@ -42,8 +45,10 @@
 typedef struct
 {
    uint8 command;
+   uint8 channelID;
    uint8 flags;
-   uint16 commandLength;
+   uint8 reserved;
+   uint32 commandLength;
    uint32 reliableSequenceNumber;
 } ENetProtocolCommandHeader;
 
@@ -60,6 +65,9 @@
    uint16 outgoingPeerID;
    uint16 packetSize;
    uint32 windowSize;
+   uint32 channelCount;
+   uint32 incomingBandwidth;
+   uint32 outgoingBandwidth;
 } ENetProtocolConnect;
 
 typedef struct
@@ -68,11 +76,21 @@
    uint16 outgoingPeerID;
    uint16 packetSize;
    uint32 windowSize;
+   uint32 channelCount;
+   uint32 incomingBandwidth;
+   uint32 outgoingBandwidth;
 } ENetProtocolVerifyConnect;
 
 typedef struct
 {
    ENetProtocolCommandHeader header;
+   uint32 incomingBandwidth;
+   uint32 outgoingBandwidth;
+} ENetProtocolBandwidthLimit;
+
+typedef struct
+{
+   ENetProtocolCommandHeader header;
 } ENetProtocolDisconnect;
 
 typedef struct
@@ -112,6 +130,7 @@
    ENetProtocolSendReliable sendReliable;
    ENetProtocolSendUnreliable sendUnreliable;
    ENetProtocolSendFragment sendFragment;
+   ENetProtocolBandwidthLimit bandwidthLimit;
 } ENetProtocol;
 
 #endif /* __ENET_PROTOCOL_H__ */