Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
#include "WaitingService.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "FWCore/ServiceRegistry/interface/ActivityRegistry.h"
#include "FWCore/ServiceRegistry/interface/ServiceMaker.h"

namespace edmtest {
  namespace test_acquire {

    WaitingService::WaitingService(edm::ParameterSet const& pset, edm::ActivityRegistry& iRegistry)
        : count_(0),
          numberOfStreamsToAccumulate_(pset.getUntrackedParameter<unsigned int>("streamsToAccumulate", 8)),
          secondsToWaitForWork_(pset.getUntrackedParameter<unsigned int>("secondsToWaitForWork", 1)) {
      iRegistry.watchPreallocate(this, &WaitingService::preallocate);
      iRegistry.watchPostEndJob(this, &WaitingService::postEndJob);
    }

    WaitingService::~WaitingService() {
      if (server_) {
        server_->stop();
      }
    }

    void WaitingService::preallocate(edm::service::SystemBounds const&) {
      caches_.resize(count_.load());
      server_ = std::make_unique<test_acquire::WaitingServer>(
          count_.load(), numberOfStreamsToAccumulate_, secondsToWaitForWork_);
      server_->start();
    }

    void WaitingService::postEndJob() {
      if (server_) {
        server_->stop();
      }
      server_.reset();
    }
  }  // namespace test_acquire
}  // namespace edmtest

using edmtest::test_acquire::WaitingService;
DEFINE_FWK_SERVICE(WaitingService);