| Index: ppapi/proxy/udp_socket_resource_base.h
|
| diff --git a/ppapi/proxy/udp_socket_resource_base.h b/ppapi/proxy/udp_socket_resource_base.h
|
| index 978e774d404236111804a0412d0d57784784e8b8..9d051b32c5cb4dbd8129b192eac7d5d31d984641 100644
|
| --- a/ppapi/proxy/udp_socket_resource_base.h
|
| +++ b/ppapi/proxy/udp_socket_resource_base.h
|
| @@ -5,6 +5,7 @@
|
| #ifndef PPAPI_PROXY_UDP_SOCKET_RESOURCE_BASE_H_
|
| #define PPAPI_PROXY_UDP_SOCKET_RESOURCE_BASE_H_
|
|
|
| +#include <queue>
|
| #include <string>
|
|
|
| #include "base/basictypes.h"
|
| @@ -23,8 +24,8 @@ class ResourceMessageReplyParams;
|
|
|
| class PPAPI_PROXY_EXPORT UDPSocketResourceBase: public PluginResource {
|
| public:
|
| - // The maximum number of bytes that each PpapiHostMsg_PPBUDPSocket_RecvFrom
|
| - // message is allowed to request.
|
| + // The maximum number of bytes that each
|
| + // PpapiPluginMsg_PPBUDPSocket_PushRecvResult message is allowed to carry.
|
| static const int32_t kMaxReadSize;
|
| // The maximum number of bytes that each PpapiHostMsg_PPBUDPSocket_SendTo
|
| // message is allowed to carry.
|
| @@ -41,6 +42,10 @@ class PPAPI_PROXY_EXPORT UDPSocketResourceBase: public PluginResource {
|
| // such a buffer size.
|
| static const int32_t kMaxReceiveBufferSize;
|
|
|
| + // The maximum number of received packets that we allow instances of this
|
| + // class to buffer.
|
| + static const size_t kPluginReceiveBufferSlots;
|
| +
|
| protected:
|
| UDPSocketResourceBase(Connection connection,
|
| PP_Instance instance,
|
| @@ -66,6 +71,16 @@ class PPAPI_PROXY_EXPORT UDPSocketResourceBase: public PluginResource {
|
| void CloseImpl();
|
|
|
| private:
|
| + struct RecvBuffer {
|
| + int32_t result;
|
| + std::string data;
|
| + PP_NetAddress_Private addr;
|
| + };
|
| +
|
| + // Resource overrides.
|
| + virtual void OnReplyReceived(const ResourceMessageReplyParams& params,
|
| + const IPC::Message& msg) OVERRIDE;
|
| +
|
| void PostAbortIfNecessary(scoped_refptr<TrackedCallback>* callback);
|
|
|
| // IPC message handlers.
|
| @@ -73,14 +88,20 @@ class PPAPI_PROXY_EXPORT UDPSocketResourceBase: public PluginResource {
|
| const ResourceMessageReplyParams& params);
|
| void OnPluginMsgBindReply(const ResourceMessageReplyParams& params,
|
| const PP_NetAddress_Private& bound_addr);
|
| - void OnPluginMsgRecvFromReply(PP_Resource* output_addr,
|
| - const ResourceMessageReplyParams& params,
|
| - const std::string& data,
|
| - const PP_NetAddress_Private& addr);
|
| + void OnPluginMsgPushRecvResult(const ResourceMessageReplyParams& params,
|
| + int32_t result,
|
| + const std::string& data,
|
| + const PP_NetAddress_Private& addr);
|
| void OnPluginMsgSendToReply(const ResourceMessageReplyParams& params,
|
| int32_t bytes_written);
|
|
|
| void RunCallback(scoped_refptr<TrackedCallback> callback, int32_t pp_result);
|
| + int32_t SetRecvFromOutput(int32_t browser_result,
|
| + const std::string& data,
|
| + const PP_NetAddress_Private& addr,
|
| + char* output_buffer,
|
| + int32_t num_bytes,
|
| + PP_Resource* output_addr);
|
|
|
| bool private_api_;
|
| bool bound_;
|
| @@ -92,10 +113,13 @@ class PPAPI_PROXY_EXPORT UDPSocketResourceBase: public PluginResource {
|
|
|
| char* read_buffer_;
|
| int32_t bytes_to_read_;
|
| + PP_Resource* recvfrom_addr_resource_;
|
|
|
| PP_NetAddress_Private recvfrom_addr_;
|
| PP_NetAddress_Private bound_addr_;
|
|
|
| + std::queue<RecvBuffer> recv_buffers_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(UDPSocketResourceBase);
|
| };
|
|
|
|
|