libiqxmlrpc  0.12.4
 All Classes Namespaces Files Functions Typedefs Enumerations
connector.h
1 // Libiqxmlrpc - an object-oriented XML-RPC solution.
2 // Copyright (C) 2011 Anton Dedov
3 
4 #ifndef _libiqnet_connector_h_
5 #define _libiqnet_connector_h_
6 
7 #include "client_conn.h"
8 
9 namespace iqnet {
10 
11 class LIBIQXMLRPC_API Connector_base {
12  Inet_addr peer_addr;
13 
14 public:
15  Connector_base( const iqnet::Inet_addr& peer );
16  virtual ~Connector_base();
17 
19  iqxmlrpc::Client_connection* connect(int timeout);
20 
21 private:
23  create_connection(const Socket&) = 0;
24 };
25 
26 template <class Conn_type>
27 class Connector: public Connector_base {
28 public:
29  Connector( const iqnet::Inet_addr& peer ):
30  Connector_base(peer)
31  {
32  }
33 
34 private:
36  create_connection(const Socket& s)
37  {
38  Conn_type* c = new Conn_type( s, true );
39  c->post_connect();
40  return c;
41  }
42 };
43 
44 } // namespace iqnet
45 
46 #endif
47 // vim:ts=2:sw=2:et