Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
0
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;
}
Ejemplo n.º 3
0
void Connector::DisconnectAll () {
    csolver->Disconnect(this);

    while (!_cnxns->IsEmpty()) {
        UList* r = _cnxns->First();
        Connector* conn = Conn(r);
        DisconnectMe(conn);
        _cnxns->Remove(r);
        delete r;
    }
}
Ejemplo n.º 4
0
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);
            }
        }
    }
}
Ejemplo n.º 5
0
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);
}