MetainfoSocket.hGo to the documentation of this file.00001 00006 /* 00007 Copyright (C) 2005 Anders Hedstrom 00008 00009 This program is free software; you can redistribute it and/or 00010 modify it under the terms of the GNU General Public License 00011 as published by the Free Software Foundation; either version 2 00012 of the License, or (at your option) any later version. 00013 00014 This program is distributed in the hope that it will be useful, 00015 but WITHOUT ANY WARRANTY; without even the implied warranty of 00016 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00017 GNU General Public License for more details. 00018 00019 You should have received a copy of the GNU General Public License 00020 along with this program; if not, write to the Free Software 00021 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 00022 */ 00023 #ifndef _METAINFOSOCKET_H 00024 #define _METAINFOSOCKET_H 00025 00026 #include <TcpSocket.h> 00027 #include <ISocketHandler.h> 00028 00029 00031 00032 class MetainfoSocket : public TcpSocket 00033 { 00034 enum state_t { 00035 STATE_GET_LENGTH = 0, 00036 STATE_GET_FILE, 00037 }; 00038 public: 00039 MetainfoSocket(ISocketHandler& ); 00040 MetainfoSocket(ISocketHandler& ,const std::string& filename); 00041 ~MetainfoSocket(); 00042 00043 void OnAccept(); 00044 void OnConnect(); 00045 // void OnRawData(const char *,size_t); 00046 void OnDelete(); 00047 void OnRead(); 00048 00049 private: 00050 MetainfoSocket(const MetainfoSocket& s) : TcpSocket(s) {} // copy constructor 00051 MetainfoSocket& operator=(const MetainfoSocket& ) { return *this; } // assignment operator 00052 00053 void InitSession(); 00054 00055 static int m_nr; 00056 int m_filenr; 00057 std::string m_filename; 00058 FILE *m_fil; 00059 state_t m_state; 00060 off_t m_sz; 00061 off_t m_sz_read; 00062 }; 00063 00064 00065 00066 00067 #endif // _METAINFOSOCKET_H |