@@ -26,6 +26,7 @@ export class VerifierBase implements Verifier {
26
26
validatorID : string = "" ;
27
27
validatorUrl : string = "" ;
28
28
apiInfo : { } = null ;
29
+ counterReqID : number = 1 ;
29
30
eventListener : VerifierEventListener | null = null ; // Listener for events from Ledger
30
31
31
32
constructor ( ledgerInfo : string ) {
@@ -43,6 +44,7 @@ export class VerifierBase implements Verifier {
43
44
return makeApiInfoList ( this . apiInfo ) ;
44
45
} ;
45
46
47
+ // NOTE: This function will be deleted due to the updating of API functions
46
48
requestLedgerOperation ( param : LedgerOperation ) : void {
47
49
logger . debug ( 'call : requestLedgerOperation' ) ;
48
50
try {
@@ -69,6 +71,75 @@ export class VerifierBase implements Verifier {
69
71
throw err ;
70
72
}
71
73
} ;
74
+
75
+ execSyncFunction ( param : LedgerOperation ) : Promise < any > {
76
+ return new Promise ( ( resolve , reject ) => {
77
+ logger . debug ( 'call : execSyncFunction' ) ;
78
+ try {
79
+ logger . debug ( `##in execSyncFunction, LedgerOperation = ${ JSON . stringify ( param ) } ` ) ;
80
+ let responseFlag : boolean = false ;
81
+
82
+ const reqID = this . genarateReqID ( ) ;
83
+ logger . debug ( `##execSyncFunction, reqID = ${ reqID } ` ) ;
84
+
85
+ const socketOptions : { } = {
86
+ rejectUnauthorized : config . socketOptions . rejectUnauthorized ,
87
+ reconnection : config . socketOptions . reconnection ,
88
+ timeout : config . socketOptions . timeout ,
89
+ } ;
90
+ logger . debug ( `socketOptions = ${ JSON . stringify ( socketOptions ) } ` ) ;
91
+ const socket : Socket = io ( this . validatorUrl , socketOptions ) ;
92
+ socket . on ( "connect_error" , ( err : object ) => {
93
+ logger . error ( "##connect_error:" , err ) ;
94
+ // end communication
95
+ socket . disconnect ( ) ;
96
+ reject ( err ) ;
97
+ } ) ;
98
+ socket . on ( "connect_timeout" , ( err : object ) => {
99
+ logger . error ( "####Error:" , err ) ;
100
+ // end communication
101
+ socket . disconnect ( ) ;
102
+ reject ( err ) ;
103
+ } ) ;
104
+ socket . on ( "error" , ( err : object ) => {
105
+ logger . error ( "####Error:" , err ) ;
106
+ socket . disconnect ( ) ;
107
+ reject ( err ) ;
108
+ } ) ;
109
+ socket . on ( "response" , ( result : any ) => {
110
+ logger . debug ( "#[recv]response, res: " + json2str ( result ) ) ;
111
+ if ( reqID === result . id ) {
112
+ responseFlag = true ;
113
+ logger . debug ( `##execSyncFunction: resObj: ${ JSON . stringify ( result . resObj ) } ` ) ;
114
+ resolve ( result . resObj ) ;
115
+ }
116
+ } ) ;
117
+
118
+ const apiType : string = param . apiType ;
119
+ //const progress: string = param.progress;
120
+ let data : { } = param . data ;
121
+ data [ "reqID" ] = reqID ;
122
+ const requestData : { } = {
123
+ func : apiType ,
124
+ args : data
125
+ } ;
126
+ logger . debug ( 'requestData : ' + JSON . stringify ( requestData ) ) ;
127
+ socket . emit ( 'request' , requestData ) ;
128
+ logger . debug ( 'set timeout' ) ;
129
+
130
+ setTimeout ( ( ) => {
131
+ if ( responseFlag === false ) {
132
+ logger . debug ( 'requestTimeout reqID : ' + reqID ) ;
133
+ resolve ( { "status" :504 , "amount" :0 } ) ;
134
+ }
135
+ } , config . verifier . syncFunctionTimeoutMillisecond ) ;
136
+ }
137
+ catch ( err ) {
138
+ logger . error ( `##Error: execSyncFunction, ${ err } ` ) ;
139
+ reject ( err ) ;
140
+ }
141
+ } ) ;
142
+ }
72
143
73
144
startMonitor ( ) : Promise < LedgerEvent > {
74
145
return new Promise ( ( resolve , reject ) => {
@@ -173,6 +244,13 @@ export class VerifierBase implements Verifier {
173
244
this . eventListener = eventListener ;
174
245
return ;
175
246
} ;
247
+
248
+ genarateReqID ( ) : string {
249
+ if ( this . counterReqID > config . verifier . maxCounterRequestID ) {
250
+ this . counterReqID = 1 ;
251
+ }
252
+ return `${ this . validatorID } _${ this . counterReqID ++ } ` ;
253
+ }
176
254
177
255
// Validator -> Verifier
178
256
// NOTE: The following methods are not implemented this time
0 commit comments