Projekt

Obecné

Profil

Stáhnout (2.07 KB) Statistiky
| Větev: | Revize:
1
## Buffers
2

    
3
NAN's `node::Buffer` helpers exist as the API has changed across supported Node versions. Use these methods to ensure compatibility.
4

    
5
 - <a href="#api_nan_new_buffer"><b><code>Nan::NewBuffer()</code></b></a>
6
 - <a href="#api_nan_copy_buffer"><b><code>Nan::CopyBuffer()</code></b></a>
7
 - <a href="#api_nan_free_callback"><b><code>Nan::FreeCallback()</code></b></a>
8

    
9
<a name="api_nan_new_buffer"></a>
10
### Nan::NewBuffer()
11

    
12
Allocate a new `node::Buffer` object with the specified size and optional data. Calls `node::Buffer::New()`.
13

    
14
Note that when creating a `Buffer` using `Nan::NewBuffer()` and an existing `char*`, it is assumed that the ownership of the pointer is being transferred to the new `Buffer` for management.
15
When a `node::Buffer` instance is garbage collected and a `FreeCallback` has not been specified, `data` will be disposed of via a call to `free()`.
16
You _must not_ free the memory space manually once you have created a `Buffer` in this way.
17

    
18
Signature:
19

    
20
```c++
21
Nan::MaybeLocal<v8::Object> Nan::NewBuffer(uint32_t size)
22
Nan::MaybeLocal<v8::Object> Nan::NewBuffer(char* data, uint32_t size)
23
Nan::MaybeLocal<v8::Object> Nan::NewBuffer(char *data,
24
                                           size_t length,
25
                                           Nan::FreeCallback callback,
26
                                           void *hint)
27
```
28

    
29

    
30
<a name="api_nan_copy_buffer"></a>
31
### Nan::CopyBuffer()
32

    
33
Similar to [`Nan::NewBuffer()`](#api_nan_new_buffer) except that an implicit memcpy will occur within Node. Calls `node::Buffer::Copy()`.
34

    
35
Management of the `char*` is left to the user, you should manually free the memory space if necessary as the new `Buffer` will have its own copy.
36

    
37
Signature:
38

    
39
```c++
40
Nan::MaybeLocal<v8::Object> Nan::CopyBuffer(const char *data, uint32_t size)
41
```
42

    
43

    
44
<a name="api_nan_free_callback"></a>
45
### Nan::FreeCallback()
46

    
47
A free callback that can be provided to [`Nan::NewBuffer()`](#api_nan_new_buffer).
48
The supplied callback will be invoked when the `Buffer` undergoes garbage collection.
49

    
50
Signature:
51

    
52
```c++
53
typedef void (*FreeCallback)(char *data, void *hint);
54
```
(2-2/17)