Files
sdk/runtime/bin/io_buffer.cc
T
sgjesse@google.com 27adbdd138 Start reading data from sockets directly into external byte arrays
This adds a new read function to Dart sockets which delivers data in a
system allocated buffer. For now just use that for socket input
streams.

The IOBuffer class does not do much at the moment, but the idea of
adding it is to be able to centralize the management of the IO
buffers. One thing I am considering here is to keep a cache of free
buffers which can be reused without freeing and re-allocating.

R=ager@google.com, ajhonsen@google.com

BUG=

Review URL: https://codereview.chromium.org//11338037

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@14321 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-31 09:56:50 +00:00

27 lines
821 B
C++

// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
#include "bin/io_buffer.h"
static void BufferFree(void* buffer) {
delete[] reinterpret_cast<uint8_t*>(buffer);
}
Dart_Handle IOBuffer::Allocate(intptr_t size, uint8_t **buffer) {
uint8_t* data = new uint8_t[size];
Dart_Handle result = Dart_NewExternalByteArray(data,
size,
data,
BufferFree);
if (Dart_IsError(result)) {
BufferFree(data);
Dart_PropagateError(result);
}
if (buffer != NULL) {
*buffer = data;
}
return result;
}