source: flair-dev/trunk/include/FlairCore/SharedMem.h@ 94

Last change on this file since 94 was 74, checked in by Sanahuja Guillaume, 6 years ago

added simupressuresensor

File size: 1.7 KB
RevLine 
[2]1// %flair:license{
[13]2// This file is part of the Flair framework distributed under the
3// CECILL-C License, Version 1.0.
[2]4// %flair:license}
5/*!
6 * \file SharedMem.h
7 * \brief Class defining a shared memory
8 * \author Guillaume Sanahuja, Copyright Heudiasyc UMR UTC/CNRS 7253
9 * \date 2014/02/10
10 * \version 4.0
11 */
12
13#ifndef SHAREDMEM_H
14#define SHAREDMEM_H
15
16#include <Object.h>
17#include <semaphore.h>
18
19class SharedMem_impl;
20
[13]21namespace flair {
22namespace core {
[2]23
[13]24/*! \class SharedMem
25*
26* \brief Class defining a shared memory
27*
28* Shared memory is identified by its name so it can be accessed
[62]29* by another process using its name.
[13]30*/
[2]31
[13]32class SharedMem : public Object {
33public:
[50]34 enum class Type { mutex, producerConsumer };
[13]35 /*!
36 * \brief Constructor
37 *
38 * Construct a shared memory object
39 *
40 * \param parent parent
41 * \param name name
[74]42 * \param size size of the shared memory:w
43 *
44 * \param type mutex or producerConsumer. Mutex type is for symmetrical use (default)
[13]45 */
[50]46 SharedMem(const Object *parent, std::string name, size_t size, Type type=Type::mutex);
[2]47
[13]48 /*!
49 * \brief Destructor
50 *
51 */
52 ~SharedMem();
[2]53
[13]54 /*!
55 * \brief Write
56 *
57 * \param buf input buffer to write to memory
58 * \param size buffer size
59 */
60 void Write(const char *buf, size_t size);
[2]61
[13]62 /*!
63 * \brief Read
64 *
65 * \param buf output buffer to write from memory
66 * \param size buffer size
67 */
[62]68 bool Read(char *buf, size_t size, Time nsTimeout=TIME_INFINITE) const;
[2]69
[50]70
71 /*!
[62]72 * \brief This function should be called when reader is ready (in case of a SharedMem of type producerConsumer)
[50]73 */
74 void ReaderReady();
[13]75private:
76 SharedMem_impl *pimpl_;
[50]77 Type type;
[13]78};
[2]79
80} // end namespace core
81} // end namespace flair
82
83#endif // SHAREDMEM_H
Note: See TracBrowser for help on using the repository browser.