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 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)); }