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