00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef __REPSOCK_H__
00012 #define __REPSOCK_H__
00013
00014 #include "sockio.h"
00015
00016 BEGIN_FASTDB_NAMESPACE
00017
00018
00019
00020
00021
00022 class FASTDB_DLL_ENTRY replication_socket_t : public socket_t {
00023 public:
00024 virtual int read(void* buf, size_t min_size, size_t max_size, time_t timeout);
00025 virtual bool write(void const* buf, size_t size);
00026
00027 virtual bool is_ok();
00028 virtual void get_error_text(char* buf, size_t buf_size);
00029
00030 virtual bool shutdown();
00031
00032 virtual bool close();
00033
00034 virtual void handleError(int socket, const char* operation, const char* error);
00035
00036 static replication_socket_t* connect(char const* addresses[],
00037 int n_addresses,
00038 int max_attempts = DEFAULT_CONNECT_MAX_ATTEMPTS,
00039 time_t timeout = DEFAULT_RECONNECT_TIMEOUT);
00040
00041
00042
00043
00044 virtual socket_t* accept();
00045 virtual bool cancel_accept();
00046 virtual char* get_peer_name();
00047 virtual int get_handle();
00048
00049 enum {
00050 MaxSockets = 8
00051 };
00052
00053
00054 ~replication_socket_t();
00055
00056 protected:
00057 replication_socket_t(char const* addresses[], int n_adresses, int max_attempts, time_t timeout);
00058
00059 socket_t** sockets;
00060 int n_sockets;
00061 bool succeed;
00062 };
00063
00064 END_FASTDB_NAMESPACE
00065
00066 #endif
00067
00068
00069