#ifndef _POP_POPCLIENT_HPP_ #define _POP_POPCLIENT_HPP_ #ifndef _COMMON_WINDOWS_HPP_ #include #endif #ifndef _SOCKET_SOCKET_HPP_ #include #endif #ifndef _COMMON_BLOCK_HPP_ #include #endif class String; class POPClient { public: POPClient(void); virtual ~POPClient(); BOOL open(const String &hostName); void close(void); BOOL isConnected(void)const; BOOL isLoggedIn(void)const; BOOL quit(void); BOOL authenticate(const String &user,const String &password); BOOL retrieve(WORD msgNum,Block &messageLines); BOOL top(Block &messageLines,WORD msgNum,WORD lineCount=10); BOOL dele(WORD msgNum); BOOL rset(void); BOOL noop(void); BOOL stat(WORD &messages,WORD &octets); protected: virtual void message(const String &messageString); virtual void message(Block &messageStrings); private: enum {POPPort=110}; enum POPCmds{Quit,User,Pass,Stat,Retr,Rset,Dele,Noop,Top}; enum POPStatus{Ok,Error}; POPClient(const POPClient &somePOPClient); POPClient &operator=(const POPClient &somePOPClient); void isLoggedIn(BOOL isLoggedIn); WORD putControlData(const String &stringData,WORD waitForResponse=TRUE); BOOL isInNakResponse(Block &responseLines); BOOL isInAckResponse(Block &responseLines); BOOL receive(Block &responseLines); BOOL receiveLines(Block &receiveStrings); WORD getControlData(void); void createCmds(void); void createStats(void); Socket mPOPControl; WSASystem mWSASystem; Block mPOPCmds; Block mPOPStatus; BOOL mIsLoggedIn; String mSpace; }; inline BOOL POPClient::isConnected(void)const { return mPOPControl.isConnected(); } inline BOOL POPClient::isLoggedIn(void)const { return mIsLoggedIn; } inline void POPClient::isLoggedIn(BOOL isLoggedIn) { mIsLoggedIn=isLoggedIn; } inline void POPClient::close(void) { mPOPControl.destroy(); isLoggedIn(FALSE); } #endif