bool HalloMQ::InitByJsonString(const std::string& path) { activemq::library::ActiveMQCPP::initializeLibrary(); std::ifstream ifs; ifs.open(path.c_str()); assert(ifs.is_open()); Json::Reader reader; if(!reader.parse(ifs, m_json_cfg)) { log4cpp::Category::getInstance("HalloMQ").error("Read json file:%s failed!,%s", path.c_str(), reader.getFormattedErrorMessages().c_str()); ifs.close(); return false; } ifs.close(); m_host_name = m_json_cfg["host-name"].asString(); for(auto it: m_json_cfg["brokers"]) { HMQConnection* conn = Conn(it); if(!conn) { continue; } m_connection_list.insert(std::make_pair(conn->GetGroupName(), conn)); } return true; }
galera::Wsdb::Conn& galera::Wsdb::create_conn(wsrep_conn_id_t conn_id) { std::pair<ConnMap::iterator, bool> i = conn_map_.insert( std::make_pair(conn_id, Conn(conn_id))); if (i.second == false) gu_throw_fatal; return i.first->second; }
void Connector::DisconnectAll () { csolver->Disconnect(this); while (!_cnxns->IsEmpty()) { UList* r = _cnxns->First(); Connector* conn = Conn(r); DisconnectMe(conn); _cnxns->Remove(r); delete r; } }
void Connector::Retransmit (Path* path) { if (path->Visited(this)) { return; } boolean forking = _cnxns->First() != _cnxns->Last(); // fork if > 1 cnxn path->Visit(this); for (UList* u = _cnxns->First(); u != _cnxns->End(); u = u->Next()) { Connector* peer = Conn(u); if (!path->Visited(peer)) { if (forking) { Path fork(path); Retransmit(peer, &fork); } else { Retransmit(peer, path); } } } }
galera::Wsdb::Conn* galera::Wsdb::get_conn(wsrep_conn_id_t const conn_id, bool const create) { gu::Lock lock(conn_mutex_); ConnMap::iterator i(conn_map_.find(conn_id)); if (conn_map_.end() == i) { if (create == true) { std::pair<ConnMap::iterator, bool> p (conn_map_.insert(std::make_pair(conn_id, Conn(conn_id)))); if (gu_unlikely(p.second == false)) gu_throw_fatal; return &p.first->second; } return 0; } return &(i->second); }