3 #include <openssl/bio.h>
4 #include <openssl/ssl.h>
6 #include <boost/format.hpp>
7 #include <loki/ScopeGuard.h>
8 #include <Scorpion/BIO.h>
12 /*static */Connector
& Connector::getInstance()
14 static Connector instance__
;
18 boost::shared_ptr
< Connection
> Connector::connect(const Details::Address
& remote_address
, boost::uint16_t port
)
20 boost::format
fmt("%1%.%2%.%3%.%4%:%5%");
21 fmt
% (unsigned int)remote_address
[0] % (unsigned int)remote_address
[1] % (unsigned int)remote_address
[2] % (unsigned int)remote_address
[3] % port
;
22 Scorpion::BIO
* bio(connect_(fmt
.str()));
23 return boost::shared_ptr
< Connection
> (new Connection(bio
));
26 boost::shared_ptr
< Connection
> Connector::connect(const std::string
& remote_address
, boost::uint16_t port
)
28 boost::format
fmt("%1%:%2%");
29 fmt
% remote_address
% port
;
30 Scorpion::BIO
* bio(connect_(fmt
.str()));
31 return boost::shared_ptr
< Connection
> (new Connection(bio
));
34 boost::shared_ptr
< Connection
> Connector::connect(const Scorpion::Context
& context
, const Details::Address
& remote_address
, boost::uint16_t port
)
36 boost::format
fmt("%1%.%2%.%3%.%4%:%5%");
37 fmt
% remote_address
[0] % remote_address
[1] % remote_address
[2] % remote_address
[3] % port
;
38 Scorpion::BIO
* bio(connectSSL_(context
, fmt
.str()));
39 return boost::shared_ptr
< Connection
> (new Connection(bio
));
42 boost::shared_ptr
< Connection
> Connector::connect(const Scorpion::Context
& context
, const std::string
& remote_address
, boost::uint16_t port
)
44 boost::format
fmt("%1%:%2%");
45 fmt
% remote_address
% port
;
46 Scorpion::BIO
* bio(connectSSL_(context
, fmt
.str()));
47 return boost::shared_ptr
< Connection
> (new Connection(bio
));
50 Connector::Connector()
53 Connector::~Connector()
56 Scorpion::BIO
* Connector::connectSSL_(const Scorpion::Context
& context
, const std::string
& target
)
58 return Scorpion::connect(context
, target
);
61 Scorpion::BIO
* Connector::connect_(const std::string
& target
)
63 return Scorpion::connect(target
);