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

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

added simupressuresensor

File size: 1.7 KB
Line 
1// %flair:license{
2// This file is part of the Flair framework distributed under the
3// CECILL-C License, Version 1.0.
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
21namespace flair {
22namespace core {
23
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
29* by another process using its name.
30*/
31
32class SharedMem : public Object {
33public:
34  enum class Type { mutex, producerConsumer };
35  /*!
36  * \brief Constructor
37  *
38  * Construct a shared memory object
39  *
40  * \param parent parent
41  * \param name name
42  * \param size size of the shared memory:w
43   *
44  * \param type mutex or producerConsumer. Mutex type is for symmetrical use (default)
45  */
46  SharedMem(const Object *parent, std::string name, size_t size, Type type=Type::mutex);
47
48  /*!
49  * \brief Destructor
50  *
51  */
52  ~SharedMem();
53
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);
61
62  /*!
63  * \brief Read
64  *
65  * \param buf output buffer to write from memory
66  * \param size buffer size
67  */
68  bool Read(char *buf, size_t size, Time nsTimeout=TIME_INFINITE) const;
69
70
71  /*!
72  * \brief This function should be called when reader is ready (in case of a SharedMem of type producerConsumer)
73  */
74   void ReaderReady();
75private:
76  SharedMem_impl *pimpl_;
77  Type type;
78};
79
80} // end namespace core
81} // end namespace flair
82
83#endif // SHAREDMEM_H
Note: See TracBrowser for help on using the repository browser.