00001
00002 Copyright (c) 2001, Lee Patterson & Ant Works Software
00003 http://ssobjects.sourceforge.net
00004
00005 created : 1999
00006 filename : bufferedsocket.cpp
00007 author : Lee Patterson (lee@antws.com)
00008
00009 purpose : Socket class provides a convienent way to send
00010 and recieve packets of data.
00011 *********************************************************************/
00012
00013 #ifndef BUFFEREDSOCKET_H
00014 #define BUFFEREDSOCKET_H
00015
00016 #include "packetbuffer.h"
00017 #include "generalexception.h"
00018 #include "socketinstance.h"
00019 #include <ctype.h>
00020
00021 namespace ssobjects
00022 {
00023
00042 class BufferedSocket : public SocketInstance
00043 {
00044 public:
00045 BufferedSocket();
00046 ~BufferedSocket();
00047 typedef enum {autoRelease,noRelease} ReleaseFlag;
00048 int sendPacket(PacketBuffer* pPacket,const ReleaseFlag release=noRelease);
00049 int sendPacket(PacketBuffer& packet);
00050 PacketBuffer* recvPacket();
00051 PacketBuffer* recvPacket(PacketBuffer& packet);
00052 int setTimeout(const int iTimeOut);
00053 void operator << (PacketBuffer& packet);
00054 void operator << (PacketBuffer* ppacket);
00055 void operator >> (PacketBuffer& packet);
00056
00057 private:
00058 PacketBuffer* readFullPacket();
00059 PacketBuffer* parsForPacket();
00060 void resetBuffer();
00061
00062 private:
00063 enum{nBufferSize=1024};
00064 char* m_pbuffer;
00065 char* m_ptr;
00066 unsigned32 m_nBytesInBuf;
00067 unsigned32 m_nBufferSize;
00068 int m_iTimeout;
00069 private:
00070
00071 BufferedSocket(const BufferedSocket&);
00072 BufferedSocket& operator=(const BufferedSocket&);
00073 };
00074
00075 #define throwBufferedSocketException(m) (throw BufferedSocketException(m,__FILE__,__LINE__))
00076
00077 class BufferedSocketException : public GeneralException
00078 {
00079 public:
00080 BufferedSocketException(char* pchMessage,const char* pFname,const int iLine)
00081 : GeneralException(pchMessage,pFname,iLine){};
00082 };
00083
00084 };
00085
00086 #endif //BUFFEREDSOCKET_H