SocketConnector.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef FIX_SOCKETCONNECTOR_H
00023 #define FIX_SOCKETCONNECTOR_H
00024
00025 #ifdef _MSC_VER
00026 #pragma warning( disable : 4503 4355 4786 4290 )
00027 #endif
00028
00029 #include "SocketMonitor.h"
00030 #include <string>
00031
00032 namespace FIX
00033 {
00035 class SocketConnector
00036 {
00037 public:
00038 class Strategy;
00039
00040 SocketConnector( int timeout = 0 );
00041
00042 int connect( const std::string& address, int port, bool noDelay,
00043 int sendBufSize, int rcvBufSize );
00044 int connect( const std::string& address, int port, bool noDelay,
00045 int sendBufSize, int rcvBufSize, Strategy& );
00046 void block( Strategy& strategy, bool poll = 0, double timeout = 0.0 );
00047 SocketMonitor& getMonitor() { return m_monitor; }
00048
00049 private:
00050 SocketMonitor m_monitor;
00051
00052 public:
00053 class Strategy
00054 {
00055 public:
00056 virtual ~Strategy() {}
00057 virtual void onConnect( SocketConnector&, int socket ) = 0;
00058 virtual void onWrite( SocketConnector&, int socket ) = 0;
00059 virtual bool onData( SocketConnector&, int socket ) = 0;
00060 virtual void onDisconnect( SocketConnector&, int socket ) = 0;
00061 virtual void onError( SocketConnector& ) = 0;
00062 virtual void onTimeout( SocketConnector& ) {};
00063 };
00064 };
00065 }
00066
00067 #endif //FIX_SOCKETCONNECTOR_H