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 3// found in the LICENSE file. 4 5#ifndef LIBRARIES_NACL_IO_SOCKET_PACKET_H_ 6#define LIBRARIES_NACL_IO_SOCKET_PACKET_H_ 7 8#include "nacl_io/fifo_interface.h" 9#include "ppapi/c/pp_resource.h" 10 11#include "sdk_util/macros.h" 12 13namespace nacl_io { 14 15class PepperInterface; 16 17// NOTE: The Packet class always owns the buffer and address. 18class Packet { 19 public: 20 explicit Packet(PepperInterface* ppapi); 21 ~Packet(); 22 23 // Copy the buffer, and address reference 24 void Copy(const void* buffer, size_t len, PP_Resource addr); 25 26 char* buffer() { return buffer_; } 27 PP_Resource addr() { return addr_; } 28 size_t len() { return len_; } 29 30 private: 31 PepperInterface* ppapi_; 32 PP_Resource addr_; 33 char* buffer_; 34 size_t len_; 35 36 DISALLOW_COPY_AND_ASSIGN(Packet); 37}; 38 39} // namespace nacl_io 40 41#endif // LIBRARIES_NACL_IO_SOCKET_PACKET_H_ 42