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__ */
1.4.1