source: XMLIO_V2/external/src/POCO/Foundation.save/Poco/SharedMemory_POSIX.h @ 80

Last change on this file since 80 was 80, checked in by ymipsl, 14 years ago

ajout lib externe

  • Property svn:eol-style set to native
File size: 4.0 KB
Line 
1//
2// SharedMemoryImpl.h
3//
4// $Id: //poco/1.3/Foundation/include/Poco/SharedMemory_POSIX.h#2 $
5//
6// Library: Foundation
7// Package: Processes
8// Module:  SharedMemoryImpl
9//
10// Definition of the SharedMemoryImpl class.
11//
12// Copyright (c) 2007, Applied Informatics Software Engineering GmbH.
13// and Contributors.
14//
15// Permission is hereby granted, free of charge, to any person or organization
16// obtaining a copy of the software and accompanying documentation covered by
17// this license (the "Software") to use, reproduce, display, distribute,
18// execute, and transmit the Software, and to prepare derivative works of the
19// Software, and to permit third-parties to whom the Software is furnished to
20// do so, all subject to the following:
21//
22// The copyright notices in the Software and this entire statement, including
23// the above license grant, this restriction and the following disclaimer,
24// must be included in all copies of the Software, in whole or in part, and
25// all derivative works of the Software, unless such copies or derivative
26// works are solely in the form of machine-executable object code generated by
27// a source language processor.
28//
29// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
30// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
31// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
32// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
33// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
34// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
35// DEALINGS IN THE SOFTWARE.
36//
37
38
39#ifndef Foundation_SharedMemoryImpl_INCLUDED
40#define Foundation_SharedMemoryImpl_INCLUDED
41
42
43#include "Poco/Foundation.h"
44#include "Poco/SharedMemory.h"
45#include "Poco/RefCountedObject.h"
46
47
48namespace Poco {
49
50
51class Foundation_API SharedMemoryImpl: public RefCountedObject
52        /// Shared memory implementation for POSIX platforms.
53{
54public:
55        SharedMemoryImpl(const std::string& name, std::size_t size, SharedMemory::AccessMode mode, const void* addrHint, bool server);
56                /// Creates or connects to a shared memory object with the given name.
57                ///
58                /// For maximum portability, name should be a valid Unix filename and not
59                /// contain any slashes or backslashes.
60                ///
61                /// An address hint can be passed to the system, specifying the desired
62                /// start address of the shared memory area. Whether the hint
63                /// is actually honored is, however, up to the system. Windows platform
64                /// will generally ignore the hint.
65                ///
66                /// If server is set to false, the shared memory region will be unlinked
67                /// by calling shm_unlink when the SharedMemory object is destroyed.
68
69        SharedMemoryImpl(const Poco::File& file, SharedMemory::AccessMode mode, const void* addrHint);
70                /// Maps the entire contents of file into a shared memory segment.
71                ///
72                /// An address hint can be passed to the system, specifying the desired
73                /// start address of the shared memory area. Whether the hint
74                /// is actually honored is, however, up to the system. Windows platform
75                /// will generally ignore the hint.
76
77        char* begin() const;
78                /// Returns the start address of the shared memory segment.
79
80        char* end() const;
81                /// Returns the one-past-end end address of the shared memory segment.
82
83protected:
84        void map(const void* addrHint);
85                /// Maps the shared memory object.
86
87        void unmap();
88                /// Unmaps the shared memory object.
89
90        void close();
91                /// Releases the handle for the shared memory segment.
92
93        ~SharedMemoryImpl();
94                /// Destroys the SharedMemoryImpl.
95
96private:
97        SharedMemoryImpl();
98        SharedMemoryImpl(const SharedMemoryImpl&);
99        SharedMemoryImpl& operator = (const SharedMemoryImpl&);
100
101        std::size_t _size;
102        int         _fd;
103        char*       _address;
104        SharedMemory::AccessMode _access;
105        std::string _name;
106        bool        _fileMapped;
107        bool        _server;
108};
109
110
111//
112// inlines
113//
114inline char* SharedMemoryImpl::begin() const
115{
116        return _address;
117}
118
119
120inline char* SharedMemoryImpl::end() const
121{
122        return _address + _size;
123}
124
125
126} // namespace Poco
127
128
129#endif // Foundation_SharedMemoryImpl_INCLUDED
Note: See TracBrowser for help on using the repository browser.