ReplicaNet and RNLobby  1
Transport.h
1 /* START_LICENSE_HEADER
2 
3 Copyright (C) 2000 Martin Piper, original design and program code
4 Copyright (C) 2001 Replica Software
5 
6 This program file is copyright (C) Replica Software and can only be used under license.
7 For more information visit: http://www.replicanet.com/
8 Or email: info@replicanet.com
9 
10 END_LICENSE_HEADER */
11 #include "RNPlatform/Inc/MemoryTracking.h"
12 #ifndef __TRANSPORT_H__
13 #define __TRANSPORT_H__
14 
15 #include <string>
16 
17 namespace RNReplicaNet
18 {
19 
20 const int TransportAnyGameChannel = 0;
21 const int TransportMinimumPacketSize = 512;
22 
35 class Transport
36 {
37 public:
38 
42  enum Error
43  {
48  };
49 
50  enum Bandwidth
51  {
52  kBandwidth_Off = 0,
53  kBandwidth_Connection = 1
54  };
55 
59  Transport();
60 
64  virtual ~Transport();
65 
66  /* These virtual functions have a base implementation but can also be replaced by a new transport if needed */
67 
73  virtual int GetPacketsSent(const bool reset = false);
74 
80  virtual int GetPacketsSentMerged(const bool reset = false);
81 
87  virtual int GetPacketsSentSize(const bool reset = false);
88 
94  virtual int GetPacketsReceived(const bool reset = false);
95 
101  virtual int GetPacketsReceivedMerged(const bool reset = false);
102 
108  virtual int GetPacketsReceivedSize(const bool reset = false);
109 
115  virtual int GetPacketsLost(const bool reset = false);
116 
123  virtual void SetBandwidthLimit(const Bandwidth enable = kBandwidth_Off);
124 
129  virtual Bandwidth GetBandwidthLimit();
130 
135  virtual void SetMaximumOutputBandwidth(const int bytesPerSecond = 0);
136 
141  virtual int GetMaximumOutputBandwidth(void);
142 
147  virtual void SetMaximumInputBandwidth(const int bytesPerSecond = 0);
148 
153  virtual int GetMaximumInputBandwidth(void);
154 
159  virtual std::string GetPeerURL(void);
160 
165  virtual bool GetTransportClosed(void);
166 
171  virtual void SetEnableLANDiscovery(const bool enable = true);
172 
177  virtual bool GetEnableLANDiscovery(void);
178 
179  /* These pure virtual functions are the minimum feature set the transport has to support */
180 
186  virtual std::string CanAccept(void) = 0;
187 
193  virtual std::string CanRoute(void) = 0;
194 
200  virtual std::string ExportURL(void) = 0;
201 
206  virtual Transport *Allocate(void) = 0;
207 
213  virtual Error Listen(const int channel = TransportAnyGameChannel) = 0;
214 
220  virtual Error Listen(const std::string &address) = 0;
221 
227  virtual Error Connect(const std::string address) = 0;
228 
233  virtual Transport *Accept(void) = 0;
234 
243  virtual Error Send(const char *data,const int len) = 0;
244 
254  virtual Error SendOrdered(const char *data,const int len,const unsigned int band = 0) = 0;
255 
265  virtual Error SendReliable(const char *data,const int len,const unsigned int band = 0) = 0;
266 
275  virtual Error SendCertain(const char *data,const int len) = 0;
276 
283  virtual int Recv(char *const data,const int maxlen) = 0;
284 
289  virtual int GetMaxPacketSize(void) = 0;
290 
295  virtual std::string HandleDiscovery(void) = 0;
296 
301  virtual void HandleDiscoveryReply(const std::string reply) = 0;
302 
306  virtual void BeginDiscovery(void) = 0;
307 
312  virtual std::string GetNextDiscovery(void) = 0;
313 
318  virtual Error GetStatus(void) = 0;
319 
323  int GetInstance(void);
324 
330  virtual void SetTransparentPacketCompression(const int level = 0)
331  {
332  }
333 
339  {
340  return 0;
341  }
342 
343 private:
344  int mTransportInstance;
345 };
346 
347 } // namespace RNReplicaNet
348 
349 #endif
Error
Definition: Transport.h:42
Definition: Transport.h:35
virtual Error SendCertain(const char *data, const int len)=0
virtual int GetMaximumInputBandwidth(void)
virtual Bandwidth GetBandwidthLimit()
virtual void BeginDiscovery(void)=0
virtual int GetPacketsReceived(const bool reset=false)
virtual std::string GetNextDiscovery(void)=0
Definition: Transport.h:44
virtual bool GetEnableLANDiscovery(void)
virtual Error Send(const char *data, const int len)=0
virtual int GetTransparentPacketCompression(void)
Definition: Transport.h:338
virtual int GetPacketsReceivedSize(const bool reset=false)
virtual int GetPacketsLost(const bool reset=false)
virtual bool GetTransportClosed(void)
virtual int GetPacketsSentMerged(const bool reset=false)
virtual int GetPacketsReceivedMerged(const bool reset=false)
virtual Error SendOrdered(const char *data, const int len, const unsigned int band=0)=0
virtual int GetMaximumOutputBandwidth(void)
virtual void SetMaximumInputBandwidth(const int bytesPerSecond=0)
virtual Error SendReliable(const char *data, const int len, const unsigned int band=0)=0
virtual Error GetStatus(void)=0
virtual Transport * Allocate(void)=0
virtual void SetEnableLANDiscovery(const bool enable=true)
virtual int Recv(char *const data, const int maxlen)=0
virtual Transport * Accept(void)=0
virtual void SetTransparentPacketCompression(const int level=0)
Definition: Transport.h:330
virtual std::string CanRoute(void)=0
virtual std::string ExportURL(void)=0
virtual int GetPacketsSent(const bool reset=false)
virtual int GetMaxPacketSize(void)=0
virtual Error Connect(const std::string address)=0
virtual void SetMaximumOutputBandwidth(const int bytesPerSecond=0)
virtual std::string CanAccept(void)=0
virtual int GetPacketsSentSize(const bool reset=false)
virtual std::string GetPeerURL(void)
virtual void SetBandwidthLimit(const Bandwidth enable=kBandwidth_Off)
virtual Error Listen(const int channel=TransportAnyGameChannel)=0
virtual void HandleDiscoveryReply(const std::string reply)=0
virtual std::string HandleDiscovery(void)=0