message.h File Reference

Interface to the Messaging System. More...

#include "client.h"

Include dependency graph for message.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  MsgDescr_t
 Describes a message, including who should receive it and data needed to handle acknowledgments. More...
struct  NetBuffer_t
 The buffer type used to store messages sent and received over the network. More...


 The number of elements in the array MsgDescr::destMap.
#define DESTMAPTYPE   Uint16
 The data type used for MsgDescr::destMap.
#define GetDestMapFlag(id)   bitflag(id, DESTMAPTYPE)
 Returns the bit flag that indicates the given client in the MsgDescr::destMap array at the correct index (see GetDestMapIndex()).
#define GetDestMapIndex(id)   bitindex(id, DESTMAPTYPE)
 Returns the index to the MsgDescr::destMap array that contains the flag for the given client.
#define MSG_MAX_SIZE   510
 The maximum size of a message in bytes.
#define SetDestToAll(msg)
 Marks a message as being destined to all clients.


typedef void(*) AcknowledgeMsg (MsgDescr *descr, int cid)
 The function prototype used to react to the recipient acknowledging a message.
typedef Bool(*) ApproveSendMsg (MsgDescr *descr, int cid)
 Approves sending a message to a given recipient.
typedef void(*) ConstructMsg (MsgDescr *descr)
 The function prototype used to construct the message in a buffer.
typedef void(*) FailMsg (MsgDescr *descr, ClientData *client)
 The function prototype used to react to a recipient that did not acknowledge a message, or if an error occured when trying to send a message.
typedef Bool(*) HandleMsg (SocketAddr *origin, NetBuffer *buffer, Uint8 *clientId, Uint16 messageId)
 The function prototype used to process incomming messages.
typedef MsgDescr_t MsgDescr
typedef NetBuffer_t NetBuffer


enum  {
 The message type identifiers that are always sent as the first byte of every message. More...


Bool AddMessage (MsgDescr *msg)
 Adds a new message to the messaging system and sends it out immediately.
void BufferFree (NetBuffer *buff)
 Returns a no longer used network buffer to the queue of available buffers.
NetBufferBufferNew ()
 Obtains a new message buffer from the internal list of buffers.
void BufferVecDestr (void *buff)
 A Vector destructor that returns a no longer used network buffer to the queue of available buffers.
void CancelAllMessages ()
 Cancels all in-flight messages effectively killing communication with the remote end(s).
int GetNumOutgoingMessages ()
 Returns the number of messages that have been sent but not acknowledged.
void MessageFree (MsgDescr *msg)
 Returns an unused message to the queue of available messages, or deallocates it if the maximum number of messages are in the available queue (MAX_MESSAGES).
Bool MessageInit ()
 Initializes the network messaging system.
MsgDescrMessageNew ()
 Gets a new uninitialized message so that it can be put to use describing a new message.
void MessageUninit ()
 Uninitializes the network messaging system.
void MsgFailDisconnect (MsgDescr *descr, ClientData *client)
 A message failure function that disconnects from the remote end in the most reliable manner possible.
void MsgFailDropConnection (MsgDescr *descr, ClientData *client)
 A message failure function that immediately terminates all communication.
void ProcessNetworkMessages ()
 Handles all network I/O for the client or server.
Bool ReceiveMessages ()
 Handles all incomming messages.
Bool SendDisconnectMessage (Uint8 id)
 Sends a disconnect message (see MSG_TYPE_CONN_DISCONN and the data format) indicating the specified client is leaving the game.
void ServiceMessages ()
 Services the outgoing messages that are already in the system.
Bool ValidateClient (SocketAddr *origin, Uint8 clientId)
 Determines if incomming client data came from a valid source.
Bool ValidateServer (SocketAddr *origin)
 Determines if the inomming server data came from the server that is running the game, and if this process is a client.

Detailed Description

Interface to the Messaging System.

Jeff Jackowski (
Copyright (C) 2007 Jeff Jackowski

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Or visit their website at:

Definition in file message.h.

Generated on Mon May 28 04:41:40 2007 for Retro Tank Super Attack by  doxygen 1.5.2