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 #ifndef SocketH
00033 #define SocketH
00034
00035 #include <zeusbase/Net/AbstractSocket.h>
00036 #include <zeusbase/System/Interfaces/IInputStream.hpp>
00037 #include <zeusbase/System/Interfaces/IOutputStream.hpp>
00038
00039
00040 BEGIN_NAMESPACE_Zeus
00041
00042 class TIPAddress;
00043
00044
00051
00052 zeusbase_class TSocket : public TAbstractSocket, public IInputStream, public IOutputStream
00053 {
00054 public:
00055 TSocket(TIPAddress& rAddress);
00056 TSocket(const TString& rstrAddr, Uint uiPort);
00057 TSocket(Int iFD, struct sockaddr_in& rAddress);
00058
00059 virtual Retval connect();
00060
00061 bool isKeepAlive() const;
00062 void setKeepAlive(bool bMode);
00063
00064
00065 virtual bool MQUALIFIER available() const{ return m_bConnected; }
00066 virtual bool MQUALIFIER isEndReached() const { return !m_bConnected; }
00067 virtual Retval MQUALIFIER read(char* pBuffer, Int iBufferSize, Int& rValidSize) const;
00068 virtual Int MQUALIFIER readItem() const;
00069 virtual Int8 MQUALIFIER readInt8(BOOL_ERRORRETVAL(pError)) const;
00070 virtual Int16 MQUALIFIER readInt16(BOOL_ERRORRETVAL(pError)) const;
00071 virtual Int32 MQUALIFIER readInt32(BOOL_ERRORRETVAL(pError)) const;
00072 virtual Int64 MQUALIFIER readInt64(BOOL_ERRORRETVAL(pError)) const;
00073 virtual Uint8 MQUALIFIER readUint8(BOOL_ERRORRETVAL(pError)) const;
00074 virtual Uint16 MQUALIFIER readUint16(BOOL_ERRORRETVAL(pError)) const;
00075 virtual Uint32 MQUALIFIER readUint32(BOOL_ERRORRETVAL(pError)) const;
00076 virtual Uint64 MQUALIFIER readUint64(BOOL_ERRORRETVAL(pError)) const;
00077 virtual Float64 MQUALIFIER readFloat64(BOOL_ERRORRETVAL(pError)) const;
00078 virtual Float32 MQUALIFIER readFloat32(BOOL_ERRORRETVAL(pError)) const;
00079 virtual bool MQUALIFIER readBool(BOOL_ERRORRETVAL(pError)) const;
00080 virtual Retval MQUALIFIER readArray(IByteArray& rData) const;
00081 virtual Retval MQUALIFIER readString(IString& rstrData) const;
00082 virtual void MQUALIFIER close() { disconnect(); }
00083 virtual void MQUALIFIER reset() {}
00084 virtual bool MQUALIFIER skip(Int iBytes = 1);
00085
00086
00087 virtual Retval MQUALIFIER write(const char* pBuffer, Int iBufferSize);
00088 virtual Retval MQUALIFIER writeInt8(Int8 cData);
00089 virtual Retval MQUALIFIER writeInt16(Int16 sData);
00090 virtual Retval MQUALIFIER writeInt32(Int32 lData);
00091 virtual Retval MQUALIFIER writeInt64(const Int64& rldData);
00092 virtual Retval MQUALIFIER writeUint8(Uint8 ucData);
00093 virtual Retval MQUALIFIER writeUint16(Uint16 usData);
00094 virtual Retval MQUALIFIER writeUint32(Uint32 ulData);
00095 virtual Retval MQUALIFIER writeUint64(const Uint64& ruldData);
00096 virtual Retval MQUALIFIER writeFloat32(Float32 fData);
00097 virtual Retval MQUALIFIER writeFloat64(const Float64& rdData);
00098 virtual Retval MQUALIFIER writeBool(bool bData);
00099 virtual Retval MQUALIFIER writeArray(const IByteArray& rData);
00100 virtual Retval MQUALIFIER writeString(const IString& rData);
00101 virtual void MQUALIFIER flush() {}
00102
00103
00104 MEMORY_MANAGER_DECL
00105
00106 protected:
00107 TSocket();
00108 virtual ~TSocket();
00109 virtual void openSocket();
00110
00111 private:
00112 };
00113
00114
00115
00116
00121
00122 inline bool TSocket::isKeepAlive() const
00123 {
00124 return TAbstractSocket::getBoolSocketOption(m_iSocketFD, SO_KEEPALIVE, SOL_SOCKET);
00125 }
00126
00127
00131
00132 inline void TSocket::setKeepAlive(bool bMode)
00133 {
00134 TAbstractSocket::setBoolSocketOption(m_iSocketFD, SO_KEEPALIVE, SOL_SOCKET, bMode);
00135 }
00136
00137
00140
00141 inline Uint8 MQUALIFIER TSocket::readUint8(bool* pError) const
00142 {
00143 return static_cast<Uint8>(readInt8(pError));
00144 }
00145
00146
00149
00150 inline Uint16 MQUALIFIER TSocket::readUint16(bool* pError) const
00151 {
00152 return static_cast<Uint16>(readInt16(pError));
00153 }
00154
00155
00158
00159 inline Uint32 MQUALIFIER TSocket::readUint32(bool* pError) const
00160 {
00161 return static_cast<Uint32>(readInt32(pError));
00162 }
00163
00164
00167
00168 inline Uint64 MQUALIFIER TSocket::readUint64(bool* pError) const
00169 {
00170 return static_cast<Uint64>(readInt64(pError));
00171 }
00172
00173
00176
00177 inline bool MQUALIFIER TSocket::readBool(bool* pError) const
00178 {
00179 return (readInt8(pError) != 0 );
00180 }
00181
00182
00185
00186 inline Retval MQUALIFIER TSocket::writeUint8(Uint8 ucData)
00187 {
00188 return writeInt8(static_cast<Int8>(ucData));
00189 }
00190
00191
00194
00195 inline Retval MQUALIFIER TSocket::writeUint16(Uint16 usData)
00196 {
00197 return writeInt16(static_cast<Int16>(usData));
00198 }
00199
00200
00203
00204 inline Retval MQUALIFIER TSocket::writeUint32(Uint32 ulData)
00205 {
00206 return writeInt32(static_cast<Int32>(ulData));
00207 }
00208
00209
00212
00213 inline Retval MQUALIFIER TSocket::writeUint64(const Uint64& ruldData)
00214 {
00215 return writeInt64(static_cast<Int64>(ruldData));
00216 }
00217
00218
00221
00222 inline Retval MQUALIFIER TSocket::writeBool(bool bData)
00223 {
00224 return writeInt8(static_cast<Int8>(bData));
00225 }
00226
00227 END_NAMESPACE_Zeus
00228
00229 #endif
00230