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

Side by Side Diff: ppapi/proxy/resource_reply_thread_registrar.h

Issue 563073002: Pepper UDP socket: buffer received packets in the plugin process to improve performance. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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 | « ppapi/proxy/ppapi_messages.h ('k') | ppapi/proxy/resource_reply_thread_registrar.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef PPAPI_PROXY_RESOURCE_REPLY_THREAD_REGISTRAR_H_ 5 #ifndef PPAPI_PROXY_RESOURCE_REPLY_THREAD_REGISTRAR_H_
6 #define PPAPI_PROXY_RESOURCE_REPLY_THREAD_REGISTRAR_H_ 6 #define PPAPI_PROXY_RESOURCE_REPLY_THREAD_REGISTRAR_H_
7 7
8 #include <map> 8 #include <map>
9 #include <set>
9 10
10 #include "base/basictypes.h" 11 #include "base/basictypes.h"
11 #include "base/memory/ref_counted.h" 12 #include "base/memory/ref_counted.h"
12 #include "base/synchronization/lock.h" 13 #include "base/synchronization/lock.h"
13 #include "ppapi/c/pp_resource.h" 14 #include "ppapi/c/pp_resource.h"
14 #include "ppapi/proxy/ppapi_proxy_export.h" 15 #include "ppapi/proxy/ppapi_proxy_export.h"
15 16
16 17
17 namespace base { 18 namespace base {
18 class MessageLoopProxy; 19 class MessageLoopProxy;
19 } 20 }
20 21
22 namespace IPC {
23 class Message;
24 }
25
21 namespace ppapi { 26 namespace ppapi {
22 27
23 class TrackedCallback; 28 class TrackedCallback;
24 29
25 namespace proxy { 30 namespace proxy {
26 31
32 class ResourceMessageReplyParams;
33
27 // ResourceReplyThreadRegistrar records the handling thread for 34 // ResourceReplyThreadRegistrar records the handling thread for
28 // PpapiPluginMsg_ResourceReply messages. 35 // PpapiPluginMsg_ResourceReply messages.
29 // This class is thread safe. 36 // This class is thread safe.
30 class PPAPI_PROXY_EXPORT ResourceReplyThreadRegistrar 37 class PPAPI_PROXY_EXPORT ResourceReplyThreadRegistrar
31 : public base::RefCountedThreadSafe<ResourceReplyThreadRegistrar> { 38 : public base::RefCountedThreadSafe<ResourceReplyThreadRegistrar> {
32 public: 39 public:
33 explicit ResourceReplyThreadRegistrar( 40 explicit ResourceReplyThreadRegistrar(
34 scoped_refptr<base::MessageLoopProxy> default_thread); 41 scoped_refptr<base::MessageLoopProxy> main_thread);
35 42
36 // This method can only be called while holding the Pepper proxy lock; the 43 // This method can only be called while holding the Pepper proxy lock; the
37 // other methods can be called with/without the Pepper proxy lock. 44 // other methods can be called with/without the Pepper proxy lock.
38 void Register(PP_Resource resource, 45 void Register(PP_Resource resource,
39 int32_t sequence_number, 46 int32_t sequence_number,
40 scoped_refptr<TrackedCallback> reply_thread_hint); 47 scoped_refptr<TrackedCallback> reply_thread_hint);
41
42 void Unregister(PP_Resource resource); 48 void Unregister(PP_Resource resource);
43 49
44 scoped_refptr<base::MessageLoopProxy> GetTargetThreadAndUnregister( 50 // This results in Resource::OnReplyReceived() for the specified message type
45 PP_Resource resource, 51 // to be called on the IO thread directly, while holding the Pepper proxy
46 int32_t sequence_number); 52 // lock.
53 void HandleOnIOThread(uint32 nested_msg_type);
54
55 // This method returns NULL if the target thread is the IO thread (because
56 // that is the thread on which this method is supposed to be called).
57 scoped_refptr<base::MessageLoopProxy> GetTargetThread(
58 const ResourceMessageReplyParams& reply_params,
59 const IPC::Message& nested_msg);
47 60
48 private: 61 private:
49 friend class base::RefCountedThreadSafe<ResourceReplyThreadRegistrar>; 62 friend class base::RefCountedThreadSafe<ResourceReplyThreadRegistrar>;
50 63
51 typedef std::map<int32_t, scoped_refptr<base::MessageLoopProxy> > 64 typedef std::map<int32_t, scoped_refptr<base::MessageLoopProxy> >
52 SequenceNumberMap; 65 SequenceThreadMap;
53 typedef std::map<PP_Resource, SequenceNumberMap> ResourceMap; 66 typedef std::map<PP_Resource, SequenceThreadMap> ResourceMap;
54 67
55 ~ResourceReplyThreadRegistrar(); 68 ~ResourceReplyThreadRegistrar();
56 69
57 // The lock that protects the data members below. 70 // The lock that protects the data members below.
58 // Please note that we should never try to acquire the Pepper proxy lock while 71 // Please note that we should never try to acquire the Pepper proxy lock while
59 // holding |lock_|, otherwise we will cause deadlock. 72 // holding |lock_|, otherwise we will cause deadlock.
60 base::Lock lock_; 73 base::Lock lock_;
61 ResourceMap map_; 74 ResourceMap map_;
62 scoped_refptr<base::MessageLoopProxy> default_thread_; 75 std::set<uint32> io_thread_message_types_;
76 scoped_refptr<base::MessageLoopProxy> main_thread_;
63 77
64 DISALLOW_COPY_AND_ASSIGN(ResourceReplyThreadRegistrar); 78 DISALLOW_COPY_AND_ASSIGN(ResourceReplyThreadRegistrar);
65 }; 79 };
66 80
67 } // namespace proxy 81 } // namespace proxy
68 } // namespace ppapi 82 } // namespace ppapi
69 83
70 #endif // PPAPI_PROXY_RESOURCE_REPLY_THREAD_REGISTRAR_H_ 84 #endif // PPAPI_PROXY_RESOURCE_REPLY_THREAD_REGISTRAR_H_
OLDNEW
« no previous file with comments | « ppapi/proxy/ppapi_messages.h ('k') | ppapi/proxy/resource_reply_thread_registrar.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698