void earlyInitialize (Plugin::Target& target) { Broker* broker = dynamic_cast<Broker*>(&target); if (!broker) return; boost::shared_ptr<MessageStore> p(new TestStore(options, *broker)); broker->setStore (p); }
void earlyInitialize (Plugin::Target& target) { Broker* broker = dynamic_cast<Broker*>(&target); if (!broker) return; store.reset(new MessageStoreImpl(broker)); const DataDir& dataDir = broker->getDataDir (); if (options.storeDir.empty ()) { if (!dataDir.isEnabled ()) throw Exception ("linearstore: If broker option --data-dir is blank or --no-data-dir is specified, linearstore option --store-dir must be present."); options.storeDir = dataDir.getPath (); } else { // Check if store dir is absolute. If not, make it absolute using qpidd executable dir as base if (options.storeDir.at(0) != '/') { char buf[1024]; if (::getcwd(buf, sizeof(buf)-1) == 0) { std::ostringstream oss; oss << "linearstore: getcwd() unable to read current directory: errno=" << errno << " (" << strerror(errno) << ")"; throw Exception(oss.str()); } std::string newStoreDir = std::string(buf) + "/" + options.storeDir; std::ostringstream oss; oss << "store-dir option \"" << options.storeDir << "\" is not absolute, changed to \"" << newStoreDir << "\""; QLS_LOG(warning, oss.str()); options.storeDir = newStoreDir; } } store->init(&options); boost::shared_ptr<qpid::broker::MessageStore> brokerStore(store); broker->setStore(brokerStore); target.addFinalizer(boost::bind(&StorePlugin::finalize, this)); }
void XmlExchangePlugin::earlyInitialize(Plugin::Target& target) { Broker* broker = dynamic_cast<broker::Broker*>(&target); if (broker) { broker->getExchanges().registerType(XmlExchange::typeName, &create); QPID_LOG(info, "Registered xml exchange"); } }
ManagedSession::ManagedSession(Broker& broker, ManagedConnection& p, const std::string i) : parent(p), id(i), unacked(0) { qpid::management::ManagementAgent* agent = broker.getManagementAgent(); if (agent != 0) { session = _qmf::Session::shared_ptr(new _qmf::Session(agent, this, broker.GetVhostObject(), id)); session->set_attached(true); session->set_detachedLifespan(0); session->clr_expireTime(); session->set_connectionRef(parent.GetManagementObject()->getObjectId()); agent->addObject(session); } }
void initialize(Plugin::Target& target) { Broker* broker = dynamic_cast<Broker*>(&target); if (!broker) return; if (!store) return; // Not done in earlyInitialize as the Broker::isInCluster test won't work there. if (broker->isInCluster()) { QPID_LOG(info, "Disabling management instrumentation for the store in a cluster."); } else { QPID_LOG(info, "Enabling management instrumentation for the store."); store->initManagement(broker); } }
bool Interconnects::deleteObject(Broker& broker, const std::string& type, const std::string& name, const qpid::types::Variant::Map& /*properties*/, const std::string& /*userId*/, const std::string& /*connectionId*/) { if (type == DOMAIN_TYPE) { boost::shared_ptr<Domain> domain; qpid::sys::ScopedLock<qpid::sys::Mutex> l(lock); DomainMap::iterator i = domains.find(name); if (i != domains.end()) { domain = i->second; domains.erase(i); if (domain->isDurable()) broker.getStore().destroy(*domain); return true; } else { throw qpid::Exception(QPID_MSG("No such domain: " << name)); } } else if (type == INCOMING_TYPE || type == OUTGOING_TYPE) { boost::shared_ptr<Interconnect> interconnect; { qpid::sys::ScopedLock<qpid::sys::Mutex> l(lock); InterconnectMap::iterator i = interconnects.find(name); if (i != interconnects.end()) { interconnect = i->second; interconnects.erase(i); } else { throw qpid::Exception(QPID_MSG("No such interconnection: " << name)); } } if (interconnect) interconnect->deletedFromRegistry(); return true; } else { return false; } }
void Listener::brokerDisconnected(const Broker& broker){ STDCOUT1("brokerDisconnected: " << broker << endl); STDCOUT2("broker disconnection event at " << getSecond() << endl); ListenerEvent *le = new BrokerDisconnectionEvent(broker.getUrl()); int ret = ListenerEvent::sendEventPtr(this->eventfd, le); STDCOUT2("passing event: return " << ret << endl); }
void earlyInitialize (Plugin::Target& target) { Broker* broker = dynamic_cast<Broker*>(&target); if (!broker) return; store.reset(new MessageStoreImpl(broker->getTimer())); DataDir& dataDir = broker->getDataDir (); if (options.storeDir.empty ()) { if (!dataDir.isEnabled ()) throw Exception ("msgstore: If --data-dir is blank or --no-data-dir is specified, --store-dir must be present."); options.storeDir = dataDir.getPath (); } store->init(&options); boost::shared_ptr<qpid::broker::MessageStore> brokerStore(store); broker->setStore(brokerStore); target.addFinalizer(boost::bind(&StorePlugin::finalize, this)); }
ManagedIncomingLink::ManagedIncomingLink(Broker& broker, ManagedSession& p, const std::string& source, const std::string& target, const std::string& _name) : parent(p), name(_name) { qpid::management::ManagementAgent* agent = broker.getManagementAgent(); if (agent) { incoming = _qmf::Incoming::shared_ptr(new _qmf::Incoming(agent, this, &parent, source, target, _name)); agent->addObject(incoming); } }
bool Interconnects::createObject(Broker& broker, const std::string& type, const std::string& name, const qpid::types::Variant::Map& properties, const std::string& /*userId*/, const std::string& /*connectionId*/) { if (type == DOMAIN_TYPE) { qpid::sys::ScopedLock<qpid::sys::Mutex> l(lock); DomainMap::iterator i = domains.find(name); if (i == domains.end()) { boost::shared_ptr<Domain> domain(new Domain(name, properties, broker)); domains[name] = domain; if (domain->isDurable()) broker.getStore().create(*domain); return true; } else { return false; } } else if (type == INCOMING_TYPE || type == OUTGOING_TYPE) { QPID_LOG(notice, "Creating interconnect " << name << ", " << properties); boost::shared_ptr<Domain> domain; { qpid::sys::ScopedLock<qpid::sys::Mutex> l(lock); qpid::types::Variant::Map::const_iterator p = properties.find(DOMAIN_TYPE); if (p != properties.end()) { std::string domainName = p->second; DomainMap::iterator i = domains.find(domainName); if (i != domains.end()) { domain = i->second; } else { throw qpid::Exception(QPID_MSG("No such domain: " << domainName)); } } else { throw qpid::Exception(QPID_MSG("Domain must be specified")); } } domain->connect(type == INCOMING_TYPE, name, properties, *context); return true; } else { return false; } }
bool Manager::prepare(bool silent) { knowledge.reasolveDependency(strAppName.c_str(), bAutoDependancy, silent); clearExecutables(); connections.clear(); modules.clear(); resources.clear(); connections = knowledge.getSelConnection(); modules = knowledge.getSelModules(); resources = knowledge.getSelResources(); /** * we need to initialize a module with a local broker if the * host property is set to "localhost". * * TODO: Resources should also be added to the relevant executable. up to now * all of them will be handled by manager. */ ModulePIterator itr; int id = 0; for(itr=modules.begin(); itr!=modules.end(); itr++) { Broker* broker = createBroker(*itr); broker->setDisplay((*itr)->getDisplay()); Executable* exe = new Executable(broker, (MEvent*)this, *itr, bWithWatchDog); exe->setID(id++); exe->setCommand((*itr)->getName()); exe->setParam((*itr)->getParam()); exe->setHost((*itr)->getHost()); exe->setStdio((*itr)->getStdio()); exe->setWorkDir((*itr)->getWorkDir()); exe->setPostExecWait((*itr)->getPostExecWait()); string env = string("YARP_PORT_PREFIX=") + string((*itr)->getPrefix()); env = env + ";" + (*itr)->getEnvironment(); exe->setEnv(env.c_str()); /** * Adding connections to their owners * TODO: check whether this is still needed or not */ //CnnIterator cnn; //for(cnn=connections.begin(); cnn!=connections.end(); cnn++) // if((*cnn).owner() == (*itr)) // exe->addConnection(*cnn); /** * Adding resources to their owners */ for(unsigned int i=0; i<resources.size(); i++) { ResYarpPort* res = dynamic_cast<ResYarpPort*>(resources[i]); if(res && (res->owner() == (*itr))) exe->addResource(*res); } runnables.push_back(exe); } return true; }
void Broker::sendToBroker(Broker & targetBroker, std::string s){ targetBroker.receiveFromBroker(s); }
void Proxy::proxyToBroker(CallMessage msg, Broker & b){ b.receiveCall(msg); }