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)#include "nacl_io/socket/packet.h" 668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 76e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include <assert.h> 868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include <string.h> 968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 1068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "nacl_io/pepper_interface.h" 1168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 1268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)namespace nacl_io { 1368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 1468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)Packet::Packet(PepperInterface* ppapi) 1546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) : ppapi_(ppapi), addr_(0), buffer_(NULL), len_(0) { 1646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)} 1768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)Packet::~Packet() { 1968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) if ((NULL != ppapi_) && addr_) 2068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) ppapi_->ReleaseResource(addr_); 216e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) free(buffer_); 2268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)} 2368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void Packet::Copy(const void* buffer, size_t len, PP_Resource addr) { 2568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) addr_ = addr; 2668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) len_ = len; 276e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) buffer_ = (char*)malloc(len); 286e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) assert(buffer_); 2968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 3068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) memcpy(buffer_, buffer, len); 3168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) if (addr && (NULL != ppapi_)) 3268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) ppapi_->AddRefResource(addr); 3368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)} 3468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 3568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)} // namespace nacl_io 36