DBStateServer::DBStateServer(RoleConfig roleconfig) : StateServer(roleconfig), m_db_channel(database_channel.get_rval(m_roleconfig)), m_next_context(0) { RangesConfig ranges = roleconfig["ranges"]; for(auto it = ranges.begin(); it != ranges.end(); ++it) { channel_t min = range_min.get_rval(*it); channel_t max = range_max.get_rval(*it); MessageDirector::singleton.subscribe_range(this, min, max); } std::stringstream name; name << "DBSS(Database: " << m_db_channel << ")"; m_log = new LogCategory("dbss", name.str()); set_con_name(name.str()); }
Client::Client(ClientAgent* client_agent) : m_client_agent(client_agent), m_state(CLIENT_STATE_NEW), m_channel(0), m_allocated_channel(0), m_next_context(0), m_owned_objects(), m_seen_objects(), m_interests(), m_pending_interests() { m_channel = m_client_agent->m_ct.alloc_channel(); if(!m_channel) { send_disconnect(CLIENT_DISCONNECT_GENERIC, "Client capacity reached"); return; } m_allocated_channel = m_channel; std::stringstream name; name << "Client (" << m_allocated_channel << ")"; m_log = new LogCategory("client", name.str()); set_con_name(name.str()); subscribe_channel(m_channel); subscribe_channel(BCHAN_CLIENTS); }
MDNetworkParticipant::MDNetworkParticipant(boost::asio::ip::tcp::socket *socket) : MDParticipantInterface(), NetworkClient(socket) { set_con_name("Network Participant"); }
void MDNetworkParticipant::receive_datagram(DatagramHandle dg) { DatagramIterator dgi(dg); uint16_t channels = dgi.read_uint8(); if(channels == 1 && dgi.read_channel() == CONTROL_MESSAGE) { uint16_t msg_type = dgi.read_uint16(); switch(msg_type) { case CONTROL_ADD_CHANNEL: { subscribe_channel(dgi.read_channel()); break; } case CONTROL_REMOVE_CHANNEL: { unsubscribe_channel(dgi.read_channel()); break; } case CONTROL_ADD_RANGE: { channel_t lo = dgi.read_channel(); channel_t hi = dgi.read_channel(); subscribe_range(lo, hi); break; } case CONTROL_REMOVE_RANGE: { channel_t lo = dgi.read_channel(); channel_t hi = dgi.read_channel(); unsubscribe_range(lo, hi); break; } case CONTROL_ADD_POST_REMOVE: { add_post_remove(dgi.read_datagram()); break; } case CONTROL_CLEAR_POST_REMOVE: { clear_post_removes(); break; } case CONTROL_SET_CON_NAME: { set_con_name(dgi.read_string()); break; } case CONTROL_SET_CON_URL: { set_con_url(dgi.read_string()); break; } default: logger().error() << "MDNetworkParticipant got unknown control message, type : " << msg_type << std::endl; } return; } route_datagram(dg); }