00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #if !defined(__ONIXS_TCPCLIENT_H__)
00021 #define __ONIXS_TCPCLIENT_H__
00022
00023 #include <string>
00024 #include <vector>
00025
00026 #include "OnixS/FIX/ABI.h"
00027 #include "OnixS/FIX/EngineException.h"
00028
00029 namespace OnixS
00030 {
00031 namespace Sockets
00032 {
00034 class ONIXS_FIXENGINE_API TcpClient
00035 {
00036 public:
00037
00043 TcpClient(const std::string& hostname, int port, int timeoutInMillisecons = 0);
00044
00046 TcpClient();
00047
00049 ~TcpClient(void);
00050
00056 void connect(const std::string& hostname, int port, int timeoutInMillisecons = 0);
00057
00059 void close();
00060
00067 void setNoDelay(bool setTcpNoDelayOption = true);
00068
00070 bool getNoDelay() const;
00071
00073 void send(const std::string& value);
00074
00076 void send(const char* buffer, size_t bufferLength);
00077
00078 typedef std::vector<char> Bytes;
00079
00083 const Bytes& receive(int timeoutInMillisecons = 0);
00084
00089 const Bytes& receive(size_t numberOfBytesToReceive, int timeoutInMillisecons = 0);
00090
00091 private:
00092 struct Impl;
00093 Impl* impl_;
00094
00095 bool isClosed_;
00096 };
00097 }
00098 }
00099
00100 #endif // __ONIXS_TCPCLIENT_H__