void login_server::on_disconnect( int client_id,tcp_session_ptr conn_ptr ) { if(conn_ptr->get_session_status()!=gs_connecting) conn_ptr->stop(); else return; if(client_id == GATE_SVR_NET_ID) { _map_client.clear(); } }
void login_server::connect(tcp_session_ptr connector, const char* ip_str, const char* port_str ) { if(connector->get_session_status()>gs_null) return; connector->set_session_status(gs_connecting); tcp::resolver resolver(connector->socket().get_io_service()); tcp::resolver::query query(ip_str, port_str); tcp::resolver::iterator iterator = resolver.resolve(query); boost::asio::async_connect(connector->socket(), iterator, boost::bind(&login_server::handle_connect,this,connector, boost::asio::placeholders::error)); }
void msg_server::handle_accept(tcp_session_ptr new_connection,acceptor_pointer ap,const boost::system::error_code& error) { if(_is_stop) return; if (!error) { _map_client[new_connection->get_net_id()] = new_connection; //LogT<< "new gate server[" << new_connection->get_net_id() << "] connected ..." << LogEnd; new_connection->start(new_connection->get_net_id(),shared_from_this()); on_connect(new_connection->get_net_id(),new_connection); start_accept(ap); } }
void TCP_Handler::handle_connection(tcp_session_ptr tcp_session, const boost::system::error_code& error){ if(!error){ tcp_session->start(); } accept_connection(); }
void handle_accept(tcp_session_ptr session, const asio::error_code& ec) { if (!ec) { session->start(); } start_accept(); }
void msg_server::recv_client_handler( tcp_session_ptr session,const char* data_ptr,int len ) { if(len < (int)sizeof(na::msg::msg_base)) return; na::msg::msg_json::ptr p = na::msg::msg_json::create(data_ptr,len); if(p->_net_id == 0) // for python socket msg p->_net_id = session->get_net_id(); //time_logger l(boost::lexical_cast<string,short>(p->_type).c_str()); // lock lock lock !!!! boost::mutex::scoped_lock lock(_queue_mutex); _msg_queue.push(p); }
void handle_accept(tcp_session_ptr session, const boost::system::error_code& ec) { if (!ec) { session->start(); tcp_session_ptr new_session(new tcp_session(io_service_, channel_)); acceptor_.async_accept(new_session->socket(), boost::bind(&server::handle_accept, this, new_session, _1)); } }
void login_server::handle_connect(tcp_session_ptr connector,const boost::system::error_code& error) { if (!error) { connector->set_session_status(gs_game); connector->socket().non_blocking(true); connector->start(connector->get_net_id(),shared_from_this()); if(connector->get_net_id() == LOG_SVR_NET_ID) LogS << "mysql server connected ..." << LogEnd; //else // LogS << "fee server connected ..." << LogEnd; // //if(connector->get_net_id() == FEE_SVR_NET_ID) //{ // int server_id = config_ins.get_config_prame("server_id").asInt(); // LogS << "connecting to fee server ..." << Green << "[" << server_id <<"]" << White << LogEnd; // connector->write((const char*)&server_id,4); //} //test team battle // Json::Value team; //for (int i=0;i<6;++i) // team.append(i+98); // team.append(4539); // team.append(95); //Json::Value _mfd_data; //_mfd_data["ai"] = Json::arrayValue; //for (int i = 0;i<(int)team.size();i++) //{ // Json::Value temp; // //temp["na"] = "player" + ; // //temp["kid"] = 0; // //temp["lv"] = i; // temp["mw"] = 4; // temp["idm"] = i; // temp["wn"] = 0; // _mfd_data["ai"][0u].append(temp); //} //battle_system.team_VS(team,1021,_mfd_data); //battle_system.send_team_battle_result(1000); } else { if(error == boost::asio::error::would_block) { LogE << "************* server is blocking *********" << LogEnd; return; } //mysql_state = 1; connector->set_session_status(gs_null); LogE << "************* can not connect to server, net_id: " << connector->get_net_id() << " retry ... *********" << LogEnd; //if(connector->get_net_id() == FEE_SVR_NET_ID) //{ // na::time_helper::sleep(1000000); // connect_to_fee_svr(); //} } }
void msg_server::send_msg( tcp_session_ptr conn_ptr,const na::msg::msg_json::ptr m ) { conn_ptr->write_json_msg(*m); }
void msg_server::client_connect_handler( tcp_session_ptr session,int error_value ) { on_disconnect(session->get_net_id(),session); session->stop(); }