Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1686)

Side by Side Diff: mojo/embedder/simple_platform_shared_buffer.h

Issue 621153003: Move mojo edk into mojo/edk (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix checkdeps Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « mojo/embedder/scoped_platform_handle.h ('k') | mojo/embedder/simple_platform_shared_buffer.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef MOJO_SYSTEM_SIMPLE_PLATFORM_SHARED_BUFFER_H_
6 #define MOJO_SYSTEM_SIMPLE_PLATFORM_SHARED_BUFFER_H_
7
8 #include <stddef.h>
9
10 #include "base/macros.h"
11 #include "mojo/embedder/platform_shared_buffer.h"
12 #include "mojo/system/system_impl_export.h"
13
14 namespace mojo {
15 namespace embedder {
16
17 // A simple implementation of |PlatformSharedBuffer|.
18 class MOJO_SYSTEM_IMPL_EXPORT SimplePlatformSharedBuffer
19 : public PlatformSharedBuffer {
20 public:
21 // Creates a shared buffer of size |num_bytes| bytes (initially zero-filled).
22 // |num_bytes| must be nonzero. Returns null on failure.
23 static SimplePlatformSharedBuffer* Create(size_t num_bytes);
24
25 static SimplePlatformSharedBuffer* CreateFromPlatformHandle(
26 size_t num_bytes,
27 ScopedPlatformHandle platform_handle);
28
29 // |PlatformSharedBuffer| implementation:
30 virtual size_t GetNumBytes() const override;
31 virtual scoped_ptr<PlatformSharedBufferMapping> Map(size_t offset,
32 size_t length) override;
33 virtual bool IsValidMap(size_t offset, size_t length) override;
34 virtual scoped_ptr<PlatformSharedBufferMapping> MapNoCheck(
35 size_t offset,
36 size_t length) override;
37 virtual ScopedPlatformHandle DuplicatePlatformHandle() override;
38 virtual ScopedPlatformHandle PassPlatformHandle() override;
39
40 private:
41 explicit SimplePlatformSharedBuffer(size_t num_bytes);
42 virtual ~SimplePlatformSharedBuffer();
43
44 // Implemented in simple_platform_shared_buffer_{posix,win}.cc:
45
46 // This is called by |Create()| before this object is given to anyone.
47 bool Init();
48
49 // This is like |Init()|, but for |CreateFromPlatformHandle()|. (Note: It
50 // should verify that |platform_handle| is an appropriate handle for the
51 // claimed |num_bytes_|.)
52 bool InitFromPlatformHandle(ScopedPlatformHandle platform_handle);
53
54 // The platform-dependent part of |Map()|; doesn't check arguments.
55 scoped_ptr<PlatformSharedBufferMapping> MapImpl(size_t offset, size_t length);
56
57 const size_t num_bytes_;
58
59 // This is set in |Init()|/|InitFromPlatformHandle()| and never modified
60 // (except by |PassPlatformHandle()|; see the comments above its declaration),
61 // hence does not need to be protected by a lock.
62 ScopedPlatformHandle handle_;
63
64 DISALLOW_COPY_AND_ASSIGN(SimplePlatformSharedBuffer);
65 };
66
67 // An implementation of |PlatformSharedBufferMapping|, produced by
68 // |SimplePlatformSharedBuffer|.
69 class MOJO_SYSTEM_IMPL_EXPORT SimplePlatformSharedBufferMapping
70 : public PlatformSharedBufferMapping {
71 public:
72 virtual ~SimplePlatformSharedBufferMapping();
73
74 virtual void* GetBase() const override;
75 virtual size_t GetLength() const override;
76
77 private:
78 friend class SimplePlatformSharedBuffer;
79
80 SimplePlatformSharedBufferMapping(void* base,
81 size_t length,
82 void* real_base,
83 size_t real_length)
84 : base_(base),
85 length_(length),
86 real_base_(real_base),
87 real_length_(real_length) {}
88 void Unmap();
89
90 void* const base_;
91 const size_t length_;
92
93 void* const real_base_;
94 const size_t real_length_;
95
96 DISALLOW_COPY_AND_ASSIGN(SimplePlatformSharedBufferMapping);
97 };
98
99 } // namespace embedder
100 } // namespace mojo
101
102 #endif // MOJO_SYSTEM_SIMPLE_PLATFORM_SHARED_BUFFER_H_
OLDNEW
« no previous file with comments | « mojo/embedder/scoped_platform_handle.h ('k') | mojo/embedder/simple_platform_shared_buffer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698