Introduction Manual Class Reference Header Reference

zoidcom_control.h

Go to the documentation of this file.
00001 /****************************************
00002 * zoidcom_control.h
00003 * network control class
00004 *
00005 * This file is part of the "Zoidcom Automated Networking System" application library.
00006 * Copyright (C)2002-2007 by Joerg Rueppel. See documentation for copyright and licensing details.
00007 *****************************************/
00008 
00009 #ifndef _ZOIDCONTROL_H_
00010 #define _ZOIDCONTROL_H_
00011 
00012 #include "zoidcom.h"
00013 
00017 /*
00018 ** forwards
00019 */
00020 
00021 class ZCom_Control_Private;
00022 class ZCom_ConnGroupManager;
00023 class ZCom_BitStream;
00024 class ZCom_Address;
00025 class ZCom_Node;
00026 
00027 /*
00028 ** enums and typedefs
00029 */
00030 
00062 #define ZCOM_CLASSFLAG_ANNOUNCEDATA   (1L << 0)
00063 
00065 
00066 /* ===================================== */
00067 
00074 class ZCOM_API ZCom_Control
00075 {
00076 protected:
00077 
00078   ZCom_Control_Private *m_priv;
00079 
00080   /************************************/
00081 
00082 public:
00083   ZCom_Control( void );
00084 
00092   virtual ~ZCom_Control( void );
00093 
00106   void Shutdown( void );
00107 
00114   void
00115     ZCom_setDebugName( const char *_name );
00116 
00134   bool
00135     ZCom_initSockets( bool _useudp, zU16 _udpport, zU16 _localport, zU8 _control_id_size = 0);
00136 
00157   bool
00158     ZCom_setDiscoverListener(  eZCom_DiscoverOpt _opt, zU16 _discoverport );
00159 
00174   void
00175     ZCom_setControlID( zU8 _id );
00176 
00186   void
00187     ZCom_setUpstreamLimit( zU32 _total_bps, zU32 _perconn_bps );
00188 
00198   ZCom_ClassID
00199     ZCom_registerClass( const char *_name , zU32 _class_flags = 0);
00200 
00207   ZCom_ClassID
00208     ZCom_getClassID( const char *_name ) const;
00209 
00216   void
00217     ZCom_processInput( eZCom_BlockMode _block = eZCom_NoBlock );
00218 
00219 
00246   void
00247     ZCom_processReplicators( zU32 _simulation_time_passed );
00248 
00253   void
00254     ZCom_processOutput();
00255 
00263   static ZCom_BitStream*
00264     ZCom_createBitStream();
00265 
00272   static void
00273     ZCom_deleteBitStream(ZCom_BitStream* _bs);
00274 
00275   /************************/
00276   /*   connection stuff   */
00277 
00278   /* The connection available after a successful connect is
00279      just a bare-boned low-level connection. It is capable of sending
00280      and receiving normal, self-made ZCom_BitStream objects.
00281   */
00282 
00286 
00298   ZCom_ConnID
00299     ZCom_Connect( const ZCom_Address &_target, ZCom_BitStream *_request );
00300 
00309   void
00310     ZCom_requestDownstreamLimit( ZCom_ConnID _id, zU16 _pps, zU16 _bpp );
00311 
00327   bool
00328     ZCom_Discover( const ZCom_Address &_address , ZCom_BitStream *_request);
00329 
00339   bool
00340     ZCom_Disconnect( const ZCom_ConnID  _id, ZCom_BitStream *_reason );
00341 
00349   void
00350     ZCom_disconnectAll( ZCom_BitStream *_reason );
00351 
00354   ZCom_ConnGroupManager&
00355     ZCom_getGroupManager();
00356 
00376   bool
00377     ZCom_sendData( const ZCom_ConnID _id, ZCom_BitStream *_stream, eZCom_SendMode _mode = eZCom_ReliableOrdered );
00378 
00388   bool
00389     ZCom_sendDataToGroup( const ZCom_GroupID _gid, ZCom_BitStream *_stream, eZCom_SendMode _mode );
00390 
00405   bool
00406     ZCom_sendDataRaw( ZCom_Address& _dest, void* _data, zU32 _size);
00407 
00428   bool
00429     ZCom_requestZoidMode( const ZCom_ConnID _id, zU8 _level );
00430 
00432 
00433   /* ----- */
00434 
00439   ZCom_Node*
00440     ZCom_getNode( ZCom_NodeID _nid ) const;
00441 
00448   const ZCom_Address*
00449     ZCom_getPeer( ZCom_ConnID _id ) const;
00450 
00456   const ZCom_ConnStats&
00457     ZCom_getConnectionStats( ZCom_ConnID _id ) const;
00458 
00465   void
00466     ZCom_setUserData( ZCom_ConnID _id, void *_data );
00467 
00473   void*
00474     ZCom_getUserData( ZCom_ConnID _id ) const;
00475 
00482   static zU32
00483     ZCom_getCurrentTime();
00484 
00489 
00497   void
00498     ZCom_simulateLag( ZCom_ConnID _id, zU32 _lagmsec );
00499 
00507   void
00508     ZCom_simulateLoss( ZCom_ConnID _id, zFloat _amount );
00509 
00511 
00512   /******************************************************/
00513   /*                     callbacks                      */
00514   /*   scroll down for callbacks in copy&paste format   */
00515 
00530 
00538   virtual void ZCom_cbConnectResult( ZCom_ConnID _id, eZCom_ConnectResult _result, ZCom_BitStream &_reply ) = 0;
00539 
00546   virtual bool ZCom_cbConnectionRequest( ZCom_ConnID  _id, ZCom_BitStream &_request, ZCom_BitStream &_reply ) = 0;
00547 
00551   virtual void ZCom_cbConnectionSpawned( ZCom_ConnID _id ) = 0;
00552 
00558   virtual void ZCom_cbConnectionClosed( ZCom_ConnID _id, eZCom_CloseReason _reason, ZCom_BitStream &_reasondata ) = 0;
00559 
00571   virtual bool ZCom_cbZoidRequest( ZCom_ConnID _id, zU8 _requested_level, ZCom_BitStream &_reason ) = 0;
00572 
00584   virtual void ZCom_cbZoidResult( ZCom_ConnID _id, eZCom_ZoidResult _result, zU8 _new_level, ZCom_BitStream &_reason ) = 0;
00585 
00604   virtual void ZCom_cbNodeRequest_Dynamic( ZCom_ConnID _id, ZCom_ClassID _requested_class, ZCom_BitStream *_announcedata,
00605                                            eZCom_NodeRole _role, ZCom_NodeID _net_id ) = 0;
00606 
00620   virtual void ZCom_cbNodeRequest_Tag( ZCom_ConnID _id, ZCom_ClassID _requested_class, ZCom_BitStream *_announcedata,
00621                                        eZCom_NodeRole _role, zU32 _tag ) = 0;
00622 
00629   virtual void ZCom_cbDataReceived( ZCom_ConnID _id, ZCom_BitStream &_data ) = 0;
00630 
00640   virtual bool ZCom_cbDiscoverRequest( const ZCom_Address &_addr, ZCom_BitStream &_request, ZCom_BitStream &_reply) = 0;
00641 
00648   virtual void ZCom_cbDiscovered( const ZCom_Address & _addr, ZCom_BitStream &_reply ) = 0;
00650 
00651 /* ****** callbacks for copy&pasting into your derived classes ******
00652 
00653   void ZCom_cbConnectResult( ZCom_ConnID _id, eZCom_ConnectResult _result, ZCom_BitStream &_reply ) {}
00654   bool ZCom_cbConnectionRequest( ZCom_ConnID  _id, ZCom_BitStream &_request, ZCom_BitStream &_reply ){return false;}
00655   void ZCom_cbConnectionSpawned( ZCom_ConnID _id ) {}
00656   void ZCom_cbConnectionClosed( ZCom_ConnID _id, eZCom_CloseReason _reason, ZCom_BitStream &_reasondata ) {}
00657   bool ZCom_cbZoidRequest( ZCom_ConnID _id, zU8 _requested_level, ZCom_BitStream &_reason ) {return false;}
00658   void ZCom_cbZoidResult( ZCom_ConnID _id, eZCom_ZoidResult _result, zU8 _new_level, ZCom_BitStream &_reason ) {}
00659   void ZCom_cbNodeRequest_Dynamic( ZCom_ConnID _id, ZCom_ClassID _requested_class, ZCom_BitStream *_announcedata, eZCom_NodeRole _role, ZCom_NodeID _net_id ) {}
00660   void ZCom_cbNodeRequest_Tag( ZCom_ConnID _id, ZCom_ClassID _requested_class, ZCom_BitStream *_announcedata, eZCom_NodeRole _role, zU32 _tag ) {}
00661   void ZCom_cbDataReceived( ZCom_ConnID _id, ZCom_BitStream &_data ) {}
00662   bool ZCom_cbDiscoverRequest( const ZCom_Address &_addr, ZCom_BitStream &_request, ZCom_BitStream &_reply ) {return false;}
00663   void ZCom_cbDiscovered( const ZCom_Address & _addr, ZCom_BitStream &_reply )  {}
00664 */
00665 };
00666 
00667 
00668 #endif

This file is part of the documentation for Zoidcom. Documentation copyright © 2004-2008 by Jörg Rüppel. Generated on Sat Aug 16 15:26:49 2008 for Zoidcom by doxygen 1.4.6-NO