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