Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042 #ifndef __JAUS_CORE_TRANSPORT_TCP_CLIENT__H
00043 #define __JAUS_CORE_TRANSPORT_TCP_CLIENT__H
00044
00045 #include "jaus/core/transport/transport.h"
00046 #include "jaus/core/transport/jtcp.h"
00047 #include <cxutils/networking/tcpclient.h>
00048
00049 namespace JAUS
00050 {
00051 class TransportManager;
00061 class JAUS_CORE_DLL JTCPClient : public Transport,
00062 public JTCP
00063 {
00064 public:
00065 JTCPClient();
00066 virtual ~JTCPClient();
00067
00068 virtual bool LoadSettings(const std::string& filename);
00069
00070 virtual bool Initialize(const Address& componentID);
00071
00072 virtual bool Initialize(const Address& componentID, const IP4Address& host);
00073
00074 virtual bool IsInitialized() const;
00075
00076 virtual void Shutdown();
00077
00078 void SetMaxPacketSize(const unsigned int maxSizeBytes);
00079
00080 virtual Address::List GetConnections() const;
00081
00082 virtual Address::List GetManualConnections() const { return JAUS::Address::List(); }
00083
00084 virtual bool HaveConnection(const Address& id) const;
00085
00086 virtual bool HaveConnection(const Address& id,
00087 const unsigned int timeSinceUpdateMs) const;
00088
00089 virtual bool SendPacket(const Packet& packet,
00090 const Header& header,
00091 const int broadcastFlags = NoBroadcast) const;
00092
00093 virtual bool SerializeMessage(const Message* message,
00094 Packet::List& stream,
00095 Header::List& streamHeaders,
00096 const UShort startingSequenceNumber,
00097 const int broadcastFlag) const;
00098
00099 virtual Packet GetTransportHeader() const { return mTransportHeader; }
00100
00101 void SetInterfaceIP(const IP4Address& networkIP = IP4Address());
00102
00103 virtual void EnableDebugMessages(const bool on = true);
00104
00105 bool AddConnection(const IP4Address& networkIP,
00106 const Address& jausID);
00107 private:
00108 virtual void ProcessPacket(Packet& packet,
00109 Header& header,
00110 const IP4Address& ipAddress,
00111 const unsigned short sourcePort);
00112 virtual void CheckServiceStatus(const unsigned int timeSinceLastCheckMs);
00113 unsigned int mMaxPayloadSize;
00114 CxUtils::IP4Address mHostIP;
00115 std::map<Address, Time::Stamp> mUpdateTimes;
00116 Packet mTransportHeader;
00117 TransportManager* mpTransportManager;
00118 Time::Stamp mDisconnectTimeMs;
00119 };
00120 }
00121
00122 #endif
00123