hmbdc
simplify-high-performance-messaging-programming
 All Classes Namespaces Functions Variables Friends Pages
PoolMinus.hpp
1 #include "hmbdc/Copyright.hpp"
2 #pragma once
3 #include "hmbdc/pattern/PoolConsumer.hpp"
4 #include <stdint.h>
5 #include <memory>
6 #include <vector>
7 
8 namespace hmbdc { namespace pattern {
9 struct PoolMinus {
10  PoolMinus(PoolMinus const&) = delete;
11  PoolMinus& operator = (PoolMinus const&) = delete;
12  using ptr = std::shared_ptr<PoolMinus>;
13  void addConsumer(PoolConsumer&, uint64_t poolThreadAffinityIn = 0xfffffffffffffffful);
14  uint32_t consumerSize() const;
15  void start(uint16_t threadCount, uint64_t cpuAffinityMask = 0, bool noUse = true);
16  void startThruRecycling(uint16_t threadCount, uint64_t cpuAffinityMask = 0) {
17  start(threadCount, cpuAffinityMask);
18  }
19  void startAt(uint16_t threadCount, uint64_t cpuAffinityMask, std::vector<uint16_t> const&) {
20  start(threadCount, cpuAffinityMask);
21  }
22  void runOnce(uint16_t threadSerialNumber);
23  void stop();
24  void join();
25  static
26  ptr create(uint32_t maxConsumerSize) {
27  return std::shared_ptr<PoolMinus>(
28  new PoolMinus(maxConsumerSize)
29  );
30  }
31  ~PoolMinus();
32 
33 private:
34  PoolMinus(uint32_t);
35  void* impl_;
36 };
37 
38 }}
Definition: PoolMinus.hpp:9
Definition: PoolConsumer.hpp:13