mirror of https://github.com/lukechilds/node.git
Ryan Dahl
15 years ago
2 changed files with 0 additions and 127 deletions
@ -1,71 +0,0 @@ |
|||
// Copyright 2009, Ryan Dahl <ry@tinyclouds.org>. All rights reserved.
|
|||
//
|
|||
// Permission is hereby granted, free of charge, to any person obtaining a
|
|||
// copy of this software and associated documentation files (the
|
|||
// "Software"), to deal in the Software without restriction, including
|
|||
// without limitation the rights to use, copy, modify, merge, publish,
|
|||
// distribute, sublicense, and/or sell copies of the Software, and to permit
|
|||
// persons to whom the Software is furnished to do so, subject to the
|
|||
// following conditions:
|
|||
//
|
|||
// The above copyright notice and this permission notice shall be included
|
|||
// in all copies or substantial portions of the Software.
|
|||
//
|
|||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
|||
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
|
|||
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
|||
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
|||
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
|||
// USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
#include <node_byte_string.h> |
|||
|
|||
namespace node { |
|||
|
|||
using namespace v8; |
|||
|
|||
static v8::Persistent<v8::FunctionTemplate> byte_string_template; |
|||
|
|||
// V8 contstructor
|
|||
static Handle<Value> New(const Arguments& args) { |
|||
HandleScope scope; |
|||
|
|||
// somehow create the c object.
|
|||
byte_string *bs = malloc(sizeof(byte_string) + length); |
|||
|
|||
|
|||
bs->handle = v8::Persistent<v8::Object>::New(args.This()); |
|||
bs->handle->SetInternalField(0, v8::External::New(bs)); |
|||
|
|||
return args.This(); |
|||
} |
|||
|
|||
|
|||
byte_string* byte_string_new(size_t length) |
|||
{ |
|||
byte_string_template->GetFunction()->NewInstance(); |
|||
|
|||
// unwrap handle
|
|||
|
|||
return bs; |
|||
} |
|||
|
|||
|
|||
|
|||
void byte_string_init(v8::Local<v8::Object> target) { |
|||
HandleScope scope; |
|||
|
|||
Local<FunctionTemplate> t = FunctionTemplate::New(New); |
|||
|
|||
byte_string_template = Persistent<FunctionTemplate>::New(t); |
|||
byte_string_template->InstanceTemplate()->SetInternalFieldCount(1); |
|||
// Set class name for debugging output
|
|||
byte_string_template->SetClassName(String::NewSymbol("Binary")); |
|||
|
|||
NODE_SET_PROTOTYPE_METHOD(byte_string_template, "toString", ToString); |
|||
|
|||
target->Set(String::NewSymbol("Binary"), |
|||
byte_string_template->GetFunction()); |
|||
} |
|||
|
|||
} // namespace node
|
@ -1,56 +0,0 @@ |
|||
// Copyright 2009, Ryan Dahl <ry@tinyclouds.org>. All rights reserved.
|
|||
//
|
|||
// Permission is hereby granted, free of charge, to any person obtaining a
|
|||
// copy of this software and associated documentation files (the
|
|||
// "Software"), to deal in the Software without restriction, including
|
|||
// without limitation the rights to use, copy, modify, merge, publish,
|
|||
// distribute, sublicense, and/or sell copies of the Software, and to permit
|
|||
// persons to whom the Software is furnished to do so, subject to the
|
|||
// following conditions:
|
|||
//
|
|||
// The above copyright notice and this permission notice shall be included
|
|||
// in all copies or substantial portions of the Software.
|
|||
//
|
|||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
|||
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
|
|||
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
|||
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
|||
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
|||
// USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
#ifndef NODE_BYTE_STRING_H_ |
|||
#define NODE_BYTE_STRING_H_ |
|||
|
|||
#include <v8.h> |
|||
|
|||
namespace node { |
|||
|
|||
void byte_string_init(v8::Local<v8::Object> target); |
|||
|
|||
/* Byte string is an immutable chunk of data that can be created from C++
|
|||
* (byte_string_new()) or from Javascript (new ByteString(string, encoding)). It |
|||
* provides a means of passing data through javascript, usually from one C++ |
|||
* object (like a TCP socket) to another C++ object (like an HTTP parser). |
|||
* |
|||
* Byte strings are always destructed by the V8 GC. Do not store references |
|||
* to byte_string pointers, only create them and pass them into javascript, |
|||
* or receive them as arguments out of javascript. |
|||
*/ |
|||
|
|||
typedef struct { |
|||
v8::Persistent<v8::Object> handle; |
|||
size_t length; |
|||
char bytes[1]; |
|||
} byte_string; |
|||
|
|||
byte_string* byte_string_new(size_t length); |
|||
|
|||
byte_string* byte_string_unwrap(v8::Handle<v8::Object> handle) { |
|||
assert(!handle.IsEmpty()); |
|||
assert(handle->InternalFieldCount() > 0); |
|||
return static_cast<byte_string*>(v8::Handle<v8::External>::Cast( |
|||
handle->GetInternalField(0))->Value()); |
|||
} |
|||
|
|||
} // namespace node
|
|||
#endif // NODE_BYTE_STRING_H_
|
Loading…
Reference in new issue