5#ifndef ATHENASHAREDMEMORYTOOL_H
6#define ATHENASHAREDMEMORYTOOL_H
13#include "GaudiKernel/ServiceHandle.h"
26 class shared_memory_object;
43 virtual StatusCode
stop()
override;
44 virtual StatusCode
finalize()
override;
46 virtual StatusCode
makeServer(
int num,
const std::string& streamPortSuffix)
override;
47 virtual bool isServer()
const override;
48 virtual StatusCode
makeClient(
int num, std::string& streamPortSuffix)
override;
49 virtual bool isClient()
const override;
51 virtual StatusCode putEvent
ATLAS_NOT_THREAD_SAFE (
long eventNumber,
const void* source,
size_t nbytes,
unsigned int status)
const override;
52 virtual StatusCode
getLockedEvent(
void** target,
unsigned int& status)
const override;
53 virtual StatusCode
lockEvent(
long eventNumber)
const override;
55 virtual StatusCode
putObject(
const void* source,
size_t nbytes,
int num = 0)
override;
56 virtual StatusCode
getObject(
void** target,
size_t& nbytes,
int num = 0)
override;
57 virtual StatusCode
clearObject(
const char** tokenString,
int& num)
override;
58 virtual StatusCode
lockObject(
const char* tokenString,
int num = 0)
override;
62 Gaudi::Property<size_t>
m_maxSize{
this,
"SharedMemoryObjectSize", 64 * 1024 * 1024,
"Maximum shared memory object size in B (default = 64 MB)"};
63 Gaudi::Property<int>
m_maxDataClients{
this,
"SharedMemoryClientSize", 256,
"Maximum number of clients (default = 256)"};
68 std::unique_ptr<boost::interprocess::mapped_region>
m_payload;
69 std::unique_ptr<boost::interprocess::mapped_region>
m_status;