source: XMLIO_V2/external/src/POCO/Foundation.save/Poco/SharedMemory_WIN32.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: 3.9 KB
Line 
1//
2// SharedMemoryImpl.h
3//
4// $Id: //poco/1.3/Foundation/include/Poco/SharedMemory_WIN32.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/Poco.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 Windows 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        SharedMemoryImpl(const Poco::File& file, SharedMemory::AccessMode mode, const void* addrHint);
67                /// Maps the entire contents of file into a shared memory segment.
68                ///
69                /// An address hint can be passed to the system, specifying the desired
70                /// start address of the shared memory area. Whether the hint
71                /// is actually honored is, however, up to the system. Windows platform
72                /// will generally ignore the hint.
73
74        char* begin() const;
75                /// Returns the beginn address of the SharedMemory segment. Will be null for illegal segments.
76
77        char* end() const;
78                /// Points past the last byte of the end address of the SharedMemory segment. Will be null for illegal segments.
79
80protected:
81        void map();
82                /// Maps the shared memory object.
83
84        void unmap();
85                /// Unmaps the shared memory object.
86
87        void close();
88                /// Releases the handle for the shared memory segment.
89
90        ~SharedMemoryImpl();
91                /// Destroys the SharedMemoryImpl.
92
93private:
94        SharedMemoryImpl();
95        SharedMemoryImpl(const SharedMemoryImpl&);
96        SharedMemoryImpl& operator = (const SharedMemoryImpl&);
97
98        std::string _name;
99        HANDLE  _memHandle;
100        HANDLE  _fileHandle;
101        DWORD   _size;
102        DWORD   _mode;
103        char*   _address;
104};
105
106
107//
108// inlines
109//
110inline char* SharedMemoryImpl::begin() const
111{
112        return _address;
113}
114
115
116inline char* SharedMemoryImpl::end() const
117{
118        return _address + _size;
119}
120
121
122} // namespace Poco
123
124
125#endif // Foundation_SharedMemoryImpl_INCLUDED
Note: See TracBrowser for help on using the repository browser.