Main Page   Namespace List   Class Hierarchy   Compound List   File List   Compound Members   File Members  

netsession_generic.h

Go to the documentation of this file.
00001 /*
00002         $Id: netsession_generic.h,v 1.5 2001/03/20 13:22:20 mbn Exp $
00003 
00004         ------------------------------------------------------------------------
00005         ClanLib, the platform independent game SDK.
00006 
00007         This library is distributed under the GNU LIBRARY GENERAL PUBLIC LICENSE
00008         version 2. See COPYING for details.
00009 
00010         For a total list of contributers see CREDITS.
00011 
00012         ------------------------------------------------------------------------
00013 */
00014 
00015 #ifndef header_netsession_generic
00016 #define header_netsession_generic
00017 
00018 class CL_NetComputer;
00019 class CL_NetGroup;
00020 class CL_ConnectionProvider;
00021 
00022 #include "API/Network/netmessage.h"
00023 #include "API/Core/System/event_trigger.h"
00024 
00025 class CL_NetSession_Generic
00026 {
00027 // Construction:
00028 public:
00029         CL_NetSession_Generic(CL_ConnectionProvider *provider);
00030 
00031         virtual ~CL_NetSession_Generic();
00032 
00033 // Attributes:
00034 public:
00035         enum PacketTypes
00036         {
00037                 Packet_Hello,
00038                 Packet_Hello_ToYouToo,
00039                 Packet_NetChannel_Message_ToClient,
00040                 Packet_NetChannel_Message_ToServer,
00041                 Packet_NetChannel_AccessChange
00042         };
00043 
00044         CL_ConnectionProvider *provider;
00045 
00046         virtual CL_NetComputer &get_server() =0;
00047 
00048         virtual CL_NetGroup &get_all() =0;
00049 
00050         virtual bool peek(int channel) const=0;
00051 
00052         virtual int access_status(int channel) const=0;
00053 
00054         virtual bool is_writable(int channel) const=0;
00055 
00056         virtual bool is_readable(int channel) const=0;
00057 
00058         virtual CL_EventTrigger *get_trigger() { return &trigger; }
00059 
00060 // Operations:
00061 public:
00062         void add_ref();
00063 
00064         void release_ref();
00065 
00066         virtual void keep_alive()=0;
00067 
00068         virtual CL_NetMessage receive(int channel, int timeout=-1)=0;
00069 
00070         virtual void send(
00071                 const int dest_channel,
00072                 const CL_NetGroup &dest,
00073                 const CL_NetMessage &message,
00074                 bool reliable = true)=0;
00075 
00076         virtual CL_NetComputer receive_computer_leave()=0;
00077 
00078         virtual CL_NetComputer receive_computer_join()=0;
00079 
00080         virtual CL_NetComputer receive_computer_rejoin()=0;
00081 
00082         virtual bool receive_session_closed()=0;
00083 
00084         // Client side only:
00085         virtual int receive_access_changed()=0;
00086 
00087         // Server side only:
00088         virtual void set_access(
00089                 int channel,
00090                 const CL_NetGroup &group,
00091                 int access_rights)=0;
00092 
00093 protected:
00094         CL_EventTrigger trigger;
00095 
00096 // Implementation:
00097 private:
00098         int ref_count;
00099 };
00100 
00101 #endif

Generated at Wed Apr 4 19:54:02 2001 for ClanLib by doxygen1.2.6 written by Dimitri van Heesch, © 1997-2001