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

LoopbackSocket.h

00001 /*
00002  * Copyright 2003 Michael A. Marsh, Cornell University. All rights reserved.
00003  * This software is released under the modified BSD license.
00004  * See the file LICENSE in the top-level directory for details.
00005  */
00006 //
00007 // $Id: LoopbackSocket.h,v 1.4 2004/05/19 15:56:55 mmarsh Exp $
00008 //
00009 // $Log: LoopbackSocket.h,v $
00010 // Revision 1.4  2004/05/19 15:56:55  mmarsh
00011 // *** empty log message ***
00012 //
00013 // Revision 1.3  2004/01/23 14:55:50  mmarsh
00014 // Added flush() method specific to loopback sockets.
00015 //
00016 // Revision 1.2  2003/11/04 22:31:50  mmarsh
00017 // *** empty log message ***
00018 //
00019 //
00020 
00021 #ifndef __CODEX_QUORUM_LOOPBACKSOCKET_H__
00022 #define __CODEX_QUORUM_LOOPBACKSOCKET_H__
00023 
00024 #include <list>
00025 
00026 #include "Socket.h"
00027 #include "SocketBuilder.h"
00028 
00029 namespace CODEX_Quorum
00030 {
00036    class LoopbackSocket : public SocketBase
00037    {
00038       public :
00042          LoopbackSocket();
00043 
00047          LoopbackSocket( const LoopbackSocket& aOther );
00048 
00052          virtual ~LoopbackSocket();
00053 
00055          void setup(int port, int backlog) {}
00057          void setup(struct sockaddr* my_addr,
00058                     socklen_t addrlen,
00059                     int backlog) {}
00061          void connect(const RemoteServer& server) {}
00063          SocketBase* accept() { return clone(); }
00064 
00066          size_t readFrom( void* output, size_t maxSize=1024 ) const;
00067          /*
00069          size_t writeTo( const void* input,
00070                          size_t maxSize=1024 ) const;
00071          */
00072 
00079          int set_fd( fd_set* fd_bitmap, StateType s ) const { return 0; }
00080 
00089          bool isset_fd( const fd_set* fd_bitmap, StateType s ) const;
00090 
00091          void flush() const;
00092 
00093       protected :
00102          SocketBase* clone() { return this; }
00103 
00104       private :
00106          typedef list< unsigned char > BufferType;
00107          mutable BufferType m_buffer;
00108    };
00109 
00113    class LoopbackSocketBuilder : public SocketBuilder
00114    {
00115       public :
00117          LoopbackSocketBuilder() :
00118             SocketBuilder(0,0,0,false)
00119          {}
00120 
00122          virtual ~LoopbackSocketBuilder() {}
00123 
00124          SocketBase* operator()() const {
00125             return new LoopbackSocket;
00126          }
00127    };
00128 }
00129 
00130 #endif /* __CODEX_QUORUM_LOOPBACKSOCKET_H__ */

Generated on Fri May 6 17:39:58 2005 for COrnell Data EXchange (CODEX) by  doxygen 1.4.1