1// Copyright (c) 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_PACKET_H_ 6#define LIBRARIES_NACL_IO_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, either by 'Copy' 18// or by 'Take' ownership. 19class Packet { 20 public: 21 explicit Packet(PepperInterface* ppapi); 22 ~Packet(); 23 24 // Copy the buffer, and address reference 25 void Copy(const void *buffer, size_t len, PP_Resource addr); 26 27 // Take ownership the buffer, and address reference 28 void Take(const void *buffer, size_t len, PP_Resource addr); 29 30 char* buffer() { return buffer_; } 31 PP_Resource addr() { return addr_; } 32 size_t len() { return len_; } 33 34 private: 35 PepperInterface* ppapi_; 36 PP_Resource addr_; 37 char* buffer_; 38 size_t len_; 39 40 DISALLOW_COPY_AND_ASSIGN(Packet); 41}; 42 43} // namespace nacl_io 44 45#endif // LIBRARIES_NACL_IO_PACKET_H_ 46