00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef _SWORD_NETWORK_INETCLIENT_
00020 #define _SWORD_NETWORK_INETCLIENT_
00021
00022 #include "ace/SOCK_Connector.h"
00023 #include "sword/streams.IStorageAdapter_ACE_SOCK_Stream.h"
00024 #include "sword/streams.OStorageAdapter_ACE_SOCK_Stream.h"
00025 #include "sword/network.Url.h"
00026
00027 namespace sword {
00028
00030
00037 class InetClient {
00038 public:
00040 InetClient();
00041
00043 InetClient(const std::string &host, word port);
00044
00046 ~InetClient();
00047
00049
00050
00051
00052 void open(const std::string &host, word port);
00053
00055
00057 std::string readLine();
00058
00060
00062 void writeLine(const std::string &line);
00063
00065 word InetClient::readRaw(void* buffer, word length);
00066
00068 void InetClient::writeRaw(const void* buffer, word length);
00069
00070 class ConnectionException : public Exception {};
00071
00072 private:
00073 ACE_SOCK_Stream socket_;
00074 ACE_SOCK_Connector connector_;
00075 OStorageAdapter_ACE_SOCK_Stream ostorage_;
00076 IStorageAdapter_ACE_SOCK_Stream istorage_;
00077
00078 bool connected_;
00079 void close_();
00080 };
00081
00082 }
00083
00084 #include "sword.private/network.InetClient.inl"
00085
00086 #endif // _SWORD_NETWORK_INETCLIENT_