adds RNG support for endpoints, connections, and processors

This commit is contained in:
Peter Thorson
2013-03-30 19:54:26 -05:00
parent 39c278a871
commit f494c72006
7 changed files with 31 additions and 13 deletions

View File

@@ -155,7 +155,9 @@ public:
typedef typename config::con_msg_manager_type con_msg_manager_type;
typedef typename con_msg_manager_type::ptr con_msg_manager_ptr;
/// Type of RNG
typedef processor::processor<config> processor_type;
typedef lib::shared_ptr<processor_type> processor_ptr;
@@ -166,7 +168,7 @@ public:
typedef session::internal_state::value istate_type;
explicit connection(bool is_server, const std::string& ua, alog_type& alog,
elog_type& elog)
elog_type& elog, rng_type & rng)
: transport_con_type(is_server,alog,elog)
, m_user_agent(ua)
, m_state(session::state::CONNECTING)
@@ -177,6 +179,7 @@ public:
, m_is_server(is_server)
, m_alog(alog)
, m_elog(elog)
, m_rng(rng)
{
m_alog.write(log::alevel::devel,"connection constructor");
}
@@ -935,6 +938,8 @@ private:
alog_type& m_alog;
elog_type& m_elog;
rng_type & m_rng;
// Close state
/// Close code that was sent on the wire by this endpoint
close::status::value m_local_close_code;

View File

@@ -80,6 +80,9 @@ public:
/// Type of our concurrency policy's mutex object
typedef typename concurrency_type::mutex_type mutex_type;
/// Type of RNG
typedef typename config::rng_type rng_type;
// TODO: organize these
typedef typename connection_type::termination_handler termination_handler;
@@ -339,7 +342,7 @@ private:
validate_handler m_validate_handler;
message_handler m_message_handler;
rng_type m_rng;
// endpoint resources
std::set<connection_ptr> m_connections;

View File

@@ -1394,7 +1394,8 @@ connection<config>::get_processor(int version) const {
new processor::hybi07<config>(
transport_con_type::is_secure(),
m_is_server,
m_msg_manager
m_msg_manager,
m_rng
)
);
break;
@@ -1403,7 +1404,8 @@ connection<config>::get_processor(int version) const {
new processor::hybi08<config>(
transport_con_type::is_secure(),
m_is_server,
m_msg_manager
m_msg_manager,
m_rng
)
);
break;
@@ -1412,7 +1414,8 @@ connection<config>::get_processor(int version) const {
new processor::hybi13<config>(
transport_con_type::is_secure(),
m_is_server,
m_msg_manager
m_msg_manager,
m_rng
)
);
break;

View File

@@ -42,7 +42,7 @@ endpoint<connection,config>::create_connection() {
// Create a connection on the heap and manage it using a shared pointer
connection_ptr con(new connection_type(m_is_server,m_user_agent,m_alog,
m_elog));
m_elog, m_rng));
connection_weak_ptr w(con);

View File

@@ -41,9 +41,11 @@ template <typename config>
class hybi07 : public hybi08<config> {
public:
typedef typename config::con_msg_manager_type::ptr msg_manager_ptr;
typedef typename config::rng_type rng_type;
explicit hybi07(bool secure,bool server, msg_manager_ptr manager)
: hybi08<config>(secure, server, manager) {}
explicit hybi07(bool secure,bool server, msg_manager_ptr manager,
rng_type& rng)
: hybi08<config>(secure, server, manager, rng) {}
int get_version() const {
return 7;

View File

@@ -44,9 +44,11 @@ public:
typedef typename config::request_type request_type;
typedef typename config::con_msg_manager_type::ptr msg_manager_ptr;
typedef typename config::rng_type rng_type;
explicit hybi08(bool secure, bool server, msg_manager_ptr manager)
: hybi13<config>(secure, server, manager) {}
explicit hybi08(bool secure, bool server, msg_manager_ptr manager,
rng_type& rng)
: hybi13<config>(secure, server, manager, rng) {}
int get_version() const {
return 8;

View File

@@ -65,14 +65,17 @@ public:
typedef typename config::con_msg_manager_type msg_manager_type;
typedef typename msg_manager_type::ptr msg_manager_ptr;
typedef typename config::rng_type rng_type;
typedef typename config::permessage_compress_type permessage_compress_type;
typedef std::pair<lib::error_code,std::string> err_str_pair;
explicit hybi13(bool secure, bool server, msg_manager_ptr manager)
explicit hybi13(bool secure, bool server, msg_manager_ptr manager,
rng_type& rng)
: processor<config>(secure,server)
, m_msg_manager(manager)
, m_rng(rng)
{
reset_headers();
}
@@ -899,7 +902,7 @@ protected:
// utf8 validator
// compression state
rng_type& m_rng;
// Overall state of the processor
state m_state;