-
Notifications
You must be signed in to change notification settings - Fork 45
/
Copy pathaddon.cc
76 lines (63 loc) · 3.61 KB
/
addon.cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include "addon.h"
// Initialize the node addon
NAN_MODULE_INIT(InitAddon) {
v8::Local<v8::FunctionTemplate> tpl = Nan::New<v8::FunctionTemplate>(Connection::Create);
tpl->SetClassName(Nan::New("PQ").ToLocalChecked());
tpl->InstanceTemplate()->SetInternalFieldCount(1);
//connection initialization & management functions
Nan::SetPrototypeMethod(tpl, "$connectSync", Connection::ConnectSync);
Nan::SetPrototypeMethod(tpl, "$connect", Connection::Connect);
Nan::SetPrototypeMethod(tpl, "$finish", Connection::Finish);
Nan::SetPrototypeMethod(tpl, "$getLastErrorMessage", Connection::GetLastErrorMessage);
Nan::SetPrototypeMethod(tpl, "$resultErrorFields", Connection::ResultErrorFields);
Nan::SetPrototypeMethod(tpl, "$socket", Connection::Socket);
Nan::SetPrototypeMethod(tpl, "$serverVersion", Connection::ServerVersion);
//sync query functions
Nan::SetPrototypeMethod(tpl, "$exec", Connection::Exec);
Nan::SetPrototypeMethod(tpl, "$execParams", Connection::ExecParams);
Nan::SetPrototypeMethod(tpl, "$prepare", Connection::Prepare);
Nan::SetPrototypeMethod(tpl, "$execPrepared", Connection::ExecPrepared);
//async query functions
Nan::SetPrototypeMethod(tpl, "$sendQuery", Connection::SendQuery);
Nan::SetPrototypeMethod(tpl, "$sendQueryParams", Connection::SendQueryParams);
Nan::SetPrototypeMethod(tpl, "$sendPrepare", Connection::SendPrepare);
Nan::SetPrototypeMethod(tpl, "$sendQueryPrepared", Connection::SendQueryPrepared);
Nan::SetPrototypeMethod(tpl, "$getResult", Connection::GetResult);
//async i/o control functions
Nan::SetPrototypeMethod(tpl, "$startRead", Connection::StartRead);
Nan::SetPrototypeMethod(tpl, "$stopRead", Connection::StopRead);
Nan::SetPrototypeMethod(tpl, "$startWrite", Connection::StartWrite);
Nan::SetPrototypeMethod(tpl, "$consumeInput", Connection::ConsumeInput);
Nan::SetPrototypeMethod(tpl, "$isBusy", Connection::IsBusy);
Nan::SetPrototypeMethod(tpl, "$setNonBlocking", Connection::SetNonBlocking);
Nan::SetPrototypeMethod(tpl, "$isNonBlocking", Connection::IsNonBlocking);
Nan::SetPrototypeMethod(tpl, "$flush", Connection::Flush);
//result accessor functions
Nan::SetPrototypeMethod(tpl, "$clear", Connection::Clear);
Nan::SetPrototypeMethod(tpl, "$ntuples", Connection::Ntuples);
Nan::SetPrototypeMethod(tpl, "$nfields", Connection::Nfields);
Nan::SetPrototypeMethod(tpl, "$fname", Connection::Fname);
Nan::SetPrototypeMethod(tpl, "$ftype", Connection::Ftype);
Nan::SetPrototypeMethod(tpl, "$getvalue", Connection::Getvalue);
Nan::SetPrototypeMethod(tpl, "$getisnull", Connection::Getisnull);
Nan::SetPrototypeMethod(tpl, "$cmdStatus", Connection::CmdStatus);
Nan::SetPrototypeMethod(tpl, "$cmdTuples", Connection::CmdTuples);
Nan::SetPrototypeMethod(tpl, "$resultStatus", Connection::ResultStatus);
Nan::SetPrototypeMethod(tpl, "$resultErrorMessage", Connection::ResultErrorMessage);
//string escaping functions
#ifdef ESCAPE_SUPPORTED
Nan::SetPrototypeMethod(tpl, "$escapeLiteral", Connection::EscapeLiteral);
Nan::SetPrototypeMethod(tpl, "$escapeIdentifier", Connection::EscapeIdentifier);
#endif
//async notifications
Nan::SetPrototypeMethod(tpl, "$notifies", Connection::Notifies);
//COPY IN/OUT
Nan::SetPrototypeMethod(tpl, "$putCopyData", Connection::PutCopyData);
Nan::SetPrototypeMethod(tpl, "$putCopyEnd", Connection::PutCopyEnd);
Nan::SetPrototypeMethod(tpl, "$getCopyData", Connection::GetCopyData);
//Cancel
Nan::SetPrototypeMethod(tpl, "$cancel", Connection::Cancel);
Nan::Set(target,
Nan::New("PQ").ToLocalChecked(), Nan::GetFunction(tpl).ToLocalChecked());
}
NAN_MODULE_WORKER_ENABLED(addon, InitAddon)