00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
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
00028 public:
00029 CL_NetSession_Generic(CL_ConnectionProvider *provider);
00030
00031 virtual ~CL_NetSession_Generic();
00032
00033
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
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
00085 virtual int receive_access_changed()=0;
00086
00087
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
00097 private:
00098 int ref_count;
00099 };
00100
00101 #endif