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