18
18
using namespace v8 ;
19
19
using namespace node ;
20
20
21
- static Persistent<String> severity_symbol;
22
- static Persistent<String> code_symbol;
23
- static Persistent<String> detail_symbol;
24
- static Persistent<String> hint_symbol;
25
- static Persistent<String> position_symbol;
26
- static Persistent<String> internalPosition_symbol;
27
- static Persistent<String> internalQuery_symbol;
28
- static Persistent<String> where_symbol;
29
- static Persistent<String> file_symbol;
30
- static Persistent<String> line_symbol;
31
- static Persistent<String> routine_symbol;
32
- static Persistent<String> name_symbol;
33
- static Persistent<String> value_symbol;
34
- static Persistent<String> type_symbol;
35
- static Persistent<String> channel_symbol;
36
- static Persistent<String> payload_symbol;
37
- static Persistent<String> emit_symbol;
38
- static Persistent<String> command_symbol;
39
21
40
22
class Connection : public ObjectWrap {
41
23
@@ -51,24 +33,6 @@ class Connection : public ObjectWrap {
51
33
t->InstanceTemplate ()->SetInternalFieldCount (1 );
52
34
t->SetClassName (String::NewSymbol (" Connection" ));
53
35
54
- emit_symbol = NODE_PSYMBOL (" emit" );
55
- severity_symbol = NODE_PSYMBOL (" severity" );
56
- code_symbol = NODE_PSYMBOL (" code" );
57
- detail_symbol = NODE_PSYMBOL (" detail" );
58
- hint_symbol = NODE_PSYMBOL (" hint" );
59
- position_symbol = NODE_PSYMBOL (" position" );
60
- internalPosition_symbol = NODE_PSYMBOL (" internalPosition" );
61
- internalQuery_symbol = NODE_PSYMBOL (" internalQuery" );
62
- where_symbol = NODE_PSYMBOL (" where" );
63
- file_symbol = NODE_PSYMBOL (" file" );
64
- line_symbol = NODE_PSYMBOL (" line" );
65
- routine_symbol = NODE_PSYMBOL (" routine" );
66
- name_symbol = NODE_PSYMBOL (" name" );
67
- value_symbol = NODE_PSYMBOL (" value" );
68
- type_symbol = NODE_PSYMBOL (" dataTypeID" );
69
- channel_symbol = NODE_PSYMBOL (" channel" );
70
- payload_symbol = NODE_PSYMBOL (" payload" );
71
- command_symbol = NODE_PSYMBOL (" command" );
72
36
73
37
NODE_SET_PROTOTYPE_METHOD (t, " connect" , Connect);
74
38
#ifdef ESCAPE_SUPPORTED
@@ -556,8 +520,8 @@ class Connection : public ObjectWrap {
556
520
TRACE (" PQnotifies" );
557
521
while ((notify = PQnotifies (connection_))) {
558
522
Local<Object> result = Object::New ();
559
- result->Set (channel_symbol , String::New (notify->relname ));
560
- result->Set (payload_symbol , String::New (notify->extra ));
523
+ result->Set (String::New ( " channel " ) , String::New (notify->relname ));
524
+ result->Set (String::New ( " payload " ) , String::New (notify->extra ));
561
525
Handle <Value> res = (Handle <Value>)result;
562
526
Emit (" notification" , &res);
563
527
PQfreemem (notify);
@@ -612,11 +576,11 @@ class Connection : public ObjectWrap {
612
576
Local<Object> field = Object::New ();
613
577
// name of field
614
578
char * fieldName = PQfname (result, fieldNumber);
615
- field->Set (name_symbol , String::New (fieldName));
579
+ field->Set (String::New ( " name " ) , String::New (fieldName));
616
580
617
581
// oid of type of field
618
582
int fieldType = PQftype (result, fieldNumber);
619
- field->Set (type_symbol , Integer::New (fieldType));
583
+ field->Set (String::New ( " dataTypeID " ) , Integer::New (fieldType));
620
584
621
585
row->Set (Integer::New (fieldNumber), field);
622
586
}
@@ -677,8 +641,8 @@ class Connection : public ObjectWrap {
677
641
{
678
642
HandleScope scope;
679
643
Local<Object> info = Object::New ();
680
- info->Set (command_symbol , String::New (PQcmdStatus (result)));
681
- info->Set (value_symbol , String::New (PQcmdTuples (result)));
644
+ info->Set (String::New ( " command " ) , String::New (PQcmdStatus (result)));
645
+ info->Set (String::New ( " value " ) , String::New (PQcmdTuples (result)));
682
646
Handle <Value> e = (Handle <Value>)info;
683
647
Emit (" _cmdStatus" , &e);
684
648
}
@@ -725,23 +689,23 @@ class Connection : public ObjectWrap {
725
689
Local<Object> msg = Local<Object>::Cast (Exception::Error (String::New (errorMessage)));
726
690
TRACE (" AttachErrorFields" );
727
691
// add the other information returned by Postgres to the error object
728
- AttachErrorField (result, msg, severity_symbol , PG_DIAG_SEVERITY);
729
- AttachErrorField (result, msg, code_symbol , PG_DIAG_SQLSTATE);
730
- AttachErrorField (result, msg, detail_symbol , PG_DIAG_MESSAGE_DETAIL);
731
- AttachErrorField (result, msg, hint_symbol , PG_DIAG_MESSAGE_HINT);
732
- AttachErrorField (result, msg, position_symbol , PG_DIAG_STATEMENT_POSITION);
733
- AttachErrorField (result, msg, internalPosition_symbol , PG_DIAG_INTERNAL_POSITION);
734
- AttachErrorField (result, msg, internalQuery_symbol , PG_DIAG_INTERNAL_QUERY);
735
- AttachErrorField (result, msg, where_symbol , PG_DIAG_CONTEXT);
736
- AttachErrorField (result, msg, file_symbol , PG_DIAG_SOURCE_FILE);
737
- AttachErrorField (result, msg, line_symbol , PG_DIAG_SOURCE_LINE);
738
- AttachErrorField (result, msg, routine_symbol , PG_DIAG_SOURCE_FUNCTION);
692
+ AttachErrorField (result, msg, String::New ( " severity " ) , PG_DIAG_SEVERITY);
693
+ AttachErrorField (result, msg, String::New ( " code " ) , PG_DIAG_SQLSTATE);
694
+ AttachErrorField (result, msg, String::New ( " detail " ) , PG_DIAG_MESSAGE_DETAIL);
695
+ AttachErrorField (result, msg, String::New ( " hint " ) , PG_DIAG_MESSAGE_HINT);
696
+ AttachErrorField (result, msg, String::New ( " position " ) , PG_DIAG_STATEMENT_POSITION);
697
+ AttachErrorField (result, msg, String::New ( " internalPosition " ) , PG_DIAG_INTERNAL_POSITION);
698
+ AttachErrorField (result, msg, String::New ( " internalQuery " ) , PG_DIAG_INTERNAL_QUERY);
699
+ AttachErrorField (result, msg, String::New ( " where " ) , PG_DIAG_CONTEXT);
700
+ AttachErrorField (result, msg, String::New ( " file " ) , PG_DIAG_SOURCE_FILE);
701
+ AttachErrorField (result, msg, String::New ( " line " ) , PG_DIAG_SOURCE_LINE);
702
+ AttachErrorField (result, msg, String::New ( " routine " ) , PG_DIAG_SOURCE_FUNCTION);
739
703
Handle <Value> m = msg;
740
704
TRACE (" EmitError" );
741
705
Emit (" _error" , &m);
742
706
}
743
707
744
- void AttachErrorField (const PGresult *result, const Local<Object> msg, const Persistent <String> symbol, int fieldcode)
708
+ void AttachErrorField (const PGresult *result, const Local<Object> msg, const Local <String> symbol, int fieldcode)
745
709
{
746
710
char *val = PQresultErrorField (result, fieldcode);
747
711
if (val) {
@@ -776,7 +740,7 @@ class Connection : public ObjectWrap {
776
740
void Emit (int length, Handle <Value> *args) {
777
741
HandleScope scope;
778
742
779
- Local<Value> emit_v = this ->handle_ ->Get (emit_symbol );
743
+ Local<Value> emit_v = this ->handle_ ->Get (String::New ( " emit " ) );
780
744
assert (emit_v->IsFunction ());
781
745
Local<Function> emit_f = emit_v.As <Function>();
782
746
0 commit comments