Home C-Bits Package Documentation Project Page

Main Page   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members   File Members  

sockstreambuf.h

Go to the documentation of this file.
00001 /* ====================================================================
00002  *              The CBITS Software License, Version 1.0
00003  *
00004  *               Copyright (c) 2002-2003 Bruce Lowery
00005  *                       All rights reserved
00006  *
00007  * Redistribution and use of this software, in source and binary forms, 
00008  * with or without modification, are permitted provided that the above 
00009  * copyright notice, this paragraph, and the following paragraph are 
00010  * retained in each source code file.
00011  *
00012  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
00013  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
00014  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
00015  * DISCLAIMED.  IN NO EVENT SHALL BRUCE LOWERY OR OTHER CONTRIBUTORS 
00016  * TO THE CBITS LIBRARY BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
00017  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
00018  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
00019  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
00020  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
00021  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
00022  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
00023  * SUCH DAMAGE.
00024  * ====================================================================
00025  */
00026 #ifndef __SOCKSTREAMBUF_H__
00027 #define __SOCKSTREAMBUF_H__
00028 
00029 #if defined( __GNUC__ ) && __GNUC__ < 3
00030 #include <streambuf.h>
00031 #else
00032 #include <streambuf>
00033 #endif
00034 
00035 
00036 namespace cbits {
00037 
00038 class Socket;
00039 
00040 
00041 #ifdef WIN32
00042 
00043 #include <winsock>
00044 // For building a DLL
00045 #ifdef BUILD_DLL
00046 #define EXPORT __declspec(dllexport)
00047 #else
00048 #define EXPORT
00049 #endif
00050 typedef SOCKET socket_t;
00051 
00052 #else
00053 
00054 #define EXPORT
00055 typedef int socket_t;
00056 
00057 #endif
00058 
00059 
00060 class EXPORT sockstreambuf : public std::streambuf
00061 {
00062 
00063 public:
00064    sockstreambuf();
00065    sockstreambuf( const socket_t h );
00066    sockstreambuf( Socket* s );
00067    void set_handle( const socket_t h );
00068    ~sockstreambuf();
00069 
00070 protected:
00071    virtual int underflow();
00072    virtual int overflow( int c = EOF );
00073    
00074 private:
00075    static const int DFLT_BUF_SIZE = 1024;
00076    socket_t _h;
00077    Socket* _sock;
00078    char*   _rbuf;
00079    char    _charbuf[1];
00080    
00081 }; /* END OF sockstreambuf */
00082 
00083 };
00084 
00085 #endif
00086 
00087 /*
00088  * $Id: sockstreambuf.h,v 1.5 2002/10/16 22:32:44 brulow Exp $
00089  * 
00090  * History: (Add nothing manually below)
00091  * -----------------------------------------------------------------------
00092  *
00093  * $Log: sockstreambuf.h,v $
00094  * Revision 1.5  2002/10/16 22:32:44  brulow
00095  * Improve doc, misc
00096  *
00097  * Revision 1.4  2002/10/14 21:08:00  brulow
00098  * *** empty log message ***
00099  *
00100  * Revision 1.3  2002/10/13 20:12:59  brulow
00101  * *** empty log message ***
00102  *
00103  * Revision 1.2  2002/09/27 22:04:16  brulow
00104  * Add history footer to all .h .cpp files
00105  *
00106  *
00107  */

Generated by
doxygen
Hosted by
SourceForge