15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// found in the LICENSE file. 468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#ifndef LIBRARIES_NACL_IO_SOCKET_PACKET_H_ 65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#define LIBRARIES_NACL_IO_SOCKET_PACKET_H_ 768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "nacl_io/fifo_interface.h" 968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "ppapi/c/pp_resource.h" 1068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 1168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "sdk_util/macros.h" 1268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 1368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)namespace nacl_io { 1468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 1568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)class PepperInterface; 1668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 176e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// NOTE: The Packet class always owns the buffer and address. 1868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)class Packet { 1968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) public: 2068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) explicit Packet(PepperInterface* ppapi); 2168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) ~Packet(); 2268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 2368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) // Copy the buffer, and address reference 245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) void Copy(const void* buffer, size_t len, PP_Resource addr); 2568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 2668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) char* buffer() { return buffer_; } 2768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) PP_Resource addr() { return addr_; } 2868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) size_t len() { return len_; } 2968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 3068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) private: 3168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) PepperInterface* ppapi_; 3268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) PP_Resource addr_; 3368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) char* buffer_; 3468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) size_t len_; 3568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 3668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(Packet); 3768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)}; 3868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 3968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)} // namespace nacl_io 4068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif // LIBRARIES_NACL_IO_SOCKET_PACKET_H_ 42