pairConnection.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef EQNET_PAIRCONNECTION_H
00019 #define EQNET_PAIRCONNECTION_H
00020
00021 #include "connection.h"
00022
00023 namespace eq
00024 {
00025 namespace net
00026 {
00031 class PairConnection : public Connection
00032 {
00033 public:
00034 EQ_EXPORT PairConnection( ConnectionPtr readConnection,
00035 ConnectionPtr writeConnection );
00036
00037 EQ_EXPORT ConnectionPtr getSibling();
00038
00039 EQ_EXPORT virtual bool connect();
00040 EQ_EXPORT virtual void close();
00041
00042 virtual Notifier getNotifier() const
00043 { return _readConnection->getNotifier(); }
00044
00045 protected:
00046 EQ_EXPORT virtual ~PairConnection();
00047
00048 virtual void readNB( void* buffer, const uint64_t bytes )
00049 { _readConnection->readNB( buffer, bytes ); }
00050 virtual int64_t readSync( void* buffer, const uint64_t bytes )
00051 { return _readConnection->readSync( buffer, bytes ); }
00052 virtual int64_t write( const void* buffer, const uint64_t bytes )
00053 { return _writeConnection->write( buffer, bytes ); }
00054
00055 private:
00056 PairConnection( PairConnection* sibling );
00057
00058 ConnectionPtr _readConnection;
00059 ConnectionPtr _writeConnection;
00060 base::RefPtr<PairConnection> _sibling;
00061 };
00062 }
00063 }
00064 #endif //EQNET_PAIRCONNECTION_H