| // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef PPAPI_HOST_HOST_MESSAGE_CONTEXT_H_ |
| #define PPAPI_HOST_HOST_MESSAGE_CONTEXT_H_ |
| |
| #include "ipc/ipc_message.h" |
| #include "ppapi/host/ppapi_host_export.h" |
| #include "ppapi/proxy/resource_message_params.h" |
| |
| namespace ppapi { |
| namespace host { |
| |
| // This context structure provides information about outgoing resource message |
| // replies. |
| struct PPAPI_HOST_EXPORT ReplyMessageContext { |
| ReplyMessageContext(); |
| ReplyMessageContext( |
| const ppapi::proxy::ResourceMessageReplyParams& cp, |
| IPC::Message* sync_reply_msg, |
| int routing_id); |
| ~ReplyMessageContext(); |
| |
| // Returns a value indicating whether this context is valid or "null". |
| bool is_valid() const { return params.pp_resource() != 0; } |
| |
| // The "reply params" struct with the same resource and sequence number |
| // as the original resource message call. |
| ppapi::proxy::ResourceMessageReplyParams params; |
| |
| // If this context is generated from a sync message, this will be set to the |
| // incoming sync message. Otherwise, it will be NULL. The plugin controls |
| // whether or not the resource call is synchronous or asynchronous so a |
| // ResoureHost cannot make any assumptions about whether or not this is NULL. |
| IPC::Message* sync_reply_msg; |
| |
| // Routing ID to be used when sending a reply message. This is only useful |
| // when the plugin is in-process. Otherwise, the value will be |
| // MSG_ROUTING_NONE. |
| int routing_id; |
| }; |
| |
| // This context structure provides information about incoming resource message |
| // call requests when passed to resources. |
| struct PPAPI_HOST_EXPORT HostMessageContext { |
| explicit HostMessageContext( |
| const ppapi::proxy::ResourceMessageCallParams& cp); |
| HostMessageContext( |
| int routing_id, |
| const ppapi::proxy::ResourceMessageCallParams& cp); |
| HostMessageContext( |
| const ppapi::proxy::ResourceMessageCallParams& cp, |
| IPC::Message* sync_reply_msg); |
| ~HostMessageContext(); |
| |
| // Returns a reply message context struct which includes the reply params. |
| ReplyMessageContext MakeReplyMessageContext() const; |
| |
| // The original call parameters passed to the resource message call. This |
| // cannot be a reference because this object may be passed to another thread. |
| ppapi::proxy::ResourceMessageCallParams params; |
| |
| // The reply message. If the params has the callback flag set, this message |
| // will be sent in reply. It is initialized to the empty message. If the |
| // handler wants to send something else, it should just assign the message |
| // it wants to this value. |
| IPC::Message reply_msg; |
| |
| // If this context is generated from a sync message, this will be set to the |
| // incoming sync message. Otherwise, it will be NULL. |
| IPC::Message* sync_reply_msg; |
| |
| // Routing ID to be used when sending a reply message. This is only useful |
| // when the plugin is in-process. Otherwise, the value will be |
| // MSG_ROUTING_NONE. |
| int routing_id; |
| }; |
| |
| } // namespace host |
| } // namespace ppapi |
| |
| #endif // PPAPI_HOST_HOST_MESSAGE_CONTEXT_H_ |