Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

itcpstream.hpp

00001 /************************************************************************************
00002  *    This file is part of the MynahSA streaming and archiving toolkit              *
00003  *    Copyright (C) 2006 Mynah-Software Ltd. All Rights Reserved.                   *
00004  *                                                                                  *
00005  *    This program is free software; you can redistribute it and/or modify          *
00006  *    it under the terms of the GNU General Public License, version 2               *
00007  *    as published by the Free Software Foundation.                                 *
00008  *                                                                                  *
00009  *    This program is distributed in the hope that it will be useful,               *
00010  *    but WITHOUT ANY WARRANTY; without even the implied warranty of                *
00011  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                 *
00012  *    GNU General Public License for more details.                                  *
00013  *                                                                                  *
00014  *    You should have received a copy of the GNU General Public License along       *
00015  *    with this program; if not, write to the Free Software Foundation, Inc.,       *
00016  *    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.                   *
00017  *                                                                                  *
00018  ************************************************************************************/
00019 
00020 #ifndef __i_tcp_stream_hpp
00021 #define __i_tcp_stream_hpp
00022 
00023 #include <iostream>
00024 
00025 #include <stdexcept>
00026 
00027 #include <string>
00028 
00029 
00030 #include "istreambase.hpp"
00031 
00032 namespace MynahSA { 
00033 
00034 
00045   class ITCPStream : public IStreamBase {
00046   public:
00048     ITCPStream(int s);
00049   
00055     ITCPStream(const ITCPStream& i);
00056   
00057   
00059     ~ITCPStream();
00060   
00061   
00062     virtual IStreamBase& operator>>(char&);
00063     virtual IStreamBase& operator>>(unsigned char&);
00064     
00065     virtual IStreamBase& operator>>(short&);
00066     virtual IStreamBase& operator>>(unsigned short&);
00067     
00068     virtual IStreamBase& operator>>(bool&);
00069     
00070     virtual IStreamBase& operator>>(int&);
00071     virtual IStreamBase& operator>>(unsigned int&);
00072     
00073     virtual IStreamBase& operator>>(long long&);
00074     virtual IStreamBase& operator>>(unsigned long long&);
00075     
00076     virtual IStreamBase& operator>>(double&);
00077     virtual IStreamBase& operator>>(float&);
00078     
00080     virtual IStreamBase& operator>>(std::string& s);
00081       
00082       
00083     using IStreamBase::operator>>;
00084       
00085     bool is_open() const { return _open; }
00086       
00087     // get a single char off of the stream
00088     virtual void get(char& );
00089       
00090   private:
00092     int tcpRead(void* buf, int num);
00093   
00095     int _sd;
00097     bool _open;
00098     
00099   };
00100 };
00101 
00102 
00103 #endif