8
8
*/
9
9
import io from 'nao-socket.io' ;
10
10
11
+ interface replyType {
12
+ __MetaObject ?: any ;
13
+ [ key : string ] : any ;
14
+ }
15
+
16
+ interface signalType {
17
+ connect ?: any ;
18
+ disconnect ?: any ;
19
+ setValue ?: any ;
20
+ value ?: any ;
21
+ }
22
+
11
23
export class QiSession {
12
24
connected : any ;
13
25
disconnected : any ;
@@ -19,10 +31,10 @@ export class QiSession {
19
31
_socket : any ;
20
32
21
33
constructor (
22
- ipAddress : string = 'nao.local' ,
23
- port : string = '80' ,
24
- connected ?: any ,
25
- disconnected ?: any
34
+ ipAddress = 'nao.local' ,
35
+ port = '80' ,
36
+ connected ?: 'function' ,
37
+ disconnected ?: 'function'
26
38
) {
27
39
this . connected = connected ;
28
40
this . disconnected = disconnected ;
@@ -32,95 +44,93 @@ export class QiSession {
32
44
'force new connection' : true ,
33
45
} ) ;
34
46
console . log ( 'DBG Emile qim connecting..' ) ;
35
- let _dfd = ( this . _dfd = new Array ( ) ) ;
36
- let _sigs = ( this . _sigs = new Array ( ) ) ;
47
+ this . _dfd = [ ] ;
48
+ this . _sigs = [ ] ;
37
49
this . _idm = 0 ;
38
50
39
- interface replyType {
40
- __MetaObject ?: any ;
41
- [ key : string ] : any ;
42
- }
43
-
44
51
this . _socket . on ( 'reply' , ( data : any ) => {
45
52
console . log ( 'DBG Emile qim reply' ) ;
46
53
47
- let idm = data [ 'idm' ] ;
48
- if ( data [ 'result' ] != null && data [ 'result' ] [ 'metaobject' ] != undefined ) {
49
- let replyObject : replyType = {
54
+ const idm = data [ 'idm' ] ;
55
+ if (
56
+ data [ 'result' ] !== undefined &&
57
+ data [ 'result' ] [ 'metaobject' ] !== undefined
58
+ ) {
59
+ const replyObject : replyType = {
50
60
__MetaObject : data [ 'result' ] [ 'metaobject' ] ,
51
61
} ;
52
62
53
- let pyobj = data [ 'result' ] [ 'pyobject' ] ;
54
- _sigs [ pyobj ] = new Array ( ) ;
55
- let methods = replyObject . __MetaObject [ 'methods' ] ;
63
+ const pyobj = data [ 'result' ] [ 'pyobject' ] ;
64
+ this . _sigs [ pyobj ] = [ ] ;
65
+ const methods = replyObject . __MetaObject [ 'methods' ] ;
56
66
57
- for ( let i in methods ) {
58
- let methodName = methods [ i ] [ 'name' ] ;
67
+ for ( const i in methods ) {
68
+ const methodName = methods [ i ] [ 'name' ] ;
59
69
replyObject [ methodName ] = this . createMetaCall (
60
70
pyobj ,
61
71
methodName ,
62
72
'data'
63
73
) ;
64
74
}
65
75
66
- let signals = replyObject . __MetaObject [ 'signals' ] ;
67
- for ( let i in signals ) {
68
- let signalName = signals [ i ] [ 'name' ] ;
76
+ const signals = replyObject . __MetaObject [ 'signals' ] ;
77
+ for ( const i in signals ) {
78
+ const signalName = signals [ i ] [ 'name' ] ;
69
79
replyObject [ signalName ] = this . createMetaSignal (
70
80
pyobj ,
71
81
signalName ,
72
82
false
73
83
) ;
74
84
}
75
85
76
- let properties = replyObject . __MetaObject [ 'properties' ] ;
77
- for ( let i in properties ) {
78
- let propertyName = properties [ i ] [ 'name' ] ;
86
+ const properties = replyObject . __MetaObject [ 'properties' ] ;
87
+ for ( const i in properties ) {
88
+ const propertyName = properties [ i ] [ 'name' ] ;
79
89
replyObject [ propertyName ] = this . createMetaSignal (
80
90
pyobj ,
81
91
propertyName ,
82
92
true
83
93
) ;
84
94
}
85
95
86
- _dfd [ idm ] . resolve ( replyObject ) ;
96
+ this . _dfd [ idm ] . resolve ( replyObject ) ;
87
97
} else {
88
- if ( _dfd [ idm ] . __cbi != undefined ) {
89
- let cbi = _dfd [ idm ] . __cbi ;
90
- _sigs [ cbi [ 'obj' ] ] [ cbi [ 'signal' ] ] [ data [ 'result' ] ] = cbi [ 'cb' ] ;
98
+ if ( this . _dfd [ idm ] . __cbi != = undefined ) {
99
+ const cbi = this . _dfd [ idm ] . __cbi ;
100
+ this . _sigs [ cbi [ 'obj' ] ] [ cbi [ 'signal' ] ] [ data [ 'result' ] ] = cbi [ 'cb' ] ;
91
101
}
92
- _dfd [ idm ] . resolve ( data [ 'result' ] ) ;
102
+ this . _dfd [ idm ] . resolve ( data [ 'result' ] ) ;
93
103
}
94
- delete _dfd [ idm ] ;
104
+ delete this . _dfd [ idm ] ;
95
105
} ) ;
96
106
97
- this . _socket . on ( 'error' , function ( data : any ) {
107
+ this . _socket . on ( 'error' , ( data : any ) => {
98
108
console . log ( 'DBG Emile qim error' ) ;
99
- if ( data [ 'idm' ] != undefined ) {
100
- _dfd [ data [ 'idm' ] ] . reject ( data [ 'result' ] ) ;
101
- delete _dfd [ data [ 'idm' ] ] ;
109
+ if ( data [ 'idm' ] !== undefined ) {
110
+ this . _dfd [ data [ 'idm' ] ] . reject ( data [ 'result' ] ) ;
111
+ delete this . _dfd [ data [ 'idm' ] ] ;
102
112
}
103
113
} ) ;
104
114
105
115
this . _socket . on ( 'signal' , ( data : any ) => {
106
116
console . log ( 'DBG Emile qim signal' ) ;
107
- let res = data [ 'result' ] ;
108
- let callback = _sigs [ res [ 'obj' ] ] [ res [ 'signal' ] ] [ res [ 'link' ] ] ;
109
- if ( callback != undefined ) {
110
- callback . apply ( this , res [ 'data' ] ) ;
117
+ const result = data [ 'result' ] ;
118
+ const callback =
119
+ this . _sigs [ result [ 'obj' ] ] [ result [ 'signal' ] ] [ result [ 'link' ] ] ;
120
+ if ( callback !== undefined ) {
121
+ callback . apply ( this , result [ 'data' ] ) ;
111
122
}
112
123
} ) ;
113
124
114
125
this . _socket . on ( 'disconnect' , ( data : any ) => {
115
126
console . log ( 'DBG Emile qim disconnect' ) ;
116
- for ( let idm in _dfd ) {
117
- _dfd [ idm ] . reject ( 'Call ' + idm + ' canceled: disconnected' ) ;
118
- delete _dfd [ idm ] ;
127
+ for ( const idm in this . _dfd ) {
128
+ this . _dfd [ idm ] . reject ( 'Call ' + idm + ' canceled: disconnected' ) ;
129
+ delete this . _dfd [ idm ] ;
119
130
}
120
131
121
132
if ( this . disconnected ) {
122
133
this . disconnected ( ) ;
123
- console . log ( 'DBG Isabel disconnected' ) ;
124
134
}
125
135
} ) ;
126
136
@@ -132,30 +142,31 @@ export class QiSession {
132
142
this . connected ( this ) ;
133
143
}
134
144
} ) ;
145
+
135
146
console . log ( 'DBG Emile qim done with init' ) ;
136
147
}
137
148
138
149
createMetaCall ( obj : any , member : any , data : any ) {
139
150
return ( ...serviceArgs : any [ ] ) => {
140
- let idm = ++ this . _idm ;
141
- let args = Array . prototype . slice . call ( serviceArgs , 0 ) ;
142
- let promise = new Promise ( ( resolve , reject ) => {
143
- this . _dfd [ idm ] = { resolve : resolve , reject : reject } ;
151
+ ++ this . _idm ;
152
+
153
+ const promise = new Promise ( ( resolve , reject ) => {
154
+ this . _dfd [ this . _idm ] = { resolve : resolve , reject : reject } ;
144
155
} ) ;
145
- if ( args [ 0 ] == 'connect' ) {
146
- this . _dfd [ idm ] . __cbi = data ;
156
+ if ( serviceArgs [ 0 ] = == 'connect' ) {
157
+ this . _dfd [ this . _idm ] . __cbi = data ;
147
158
}
148
159
this . _socket . emit ( 'call' , {
149
- idm : idm ,
150
- params : { obj : obj , member : member , args : args } ,
160
+ idm : this . _idm ,
161
+ params : { obj : obj , member : member , args : serviceArgs } ,
151
162
} ) ;
152
163
return promise ;
153
164
} ;
154
165
}
155
166
156
- createMetaSignal ( obj : any , signal : any , isProperty : any ) {
157
- let signalObject : any = { } ;
158
- this . _sigs [ obj ] [ signal ] = new Array ( ) ;
167
+ createMetaSignal ( obj : any , signal : any , isProperty : boolean ) {
168
+ const signalObject : signalType = { } ;
169
+ this . _sigs [ obj ] [ signal ] = [ ] ;
159
170
signalObject . connect = ( cb : any ) => {
160
171
return this . createMetaCall ( obj , signal , {
161
172
obj : obj ,
@@ -173,11 +184,10 @@ export class QiSession {
173
184
return signalObject ;
174
185
}
175
186
176
- signalObject . setValue = ( ) => {
177
- let args = Array . prototype . slice . call ( arguments , 0 ) ;
187
+ signalObject . setValue = ( ...valueArgs : any [ ] ) => {
178
188
return this . createMetaCall ( obj , signal , 'data' ) . apply (
179
189
this ,
180
- [ 'setValue' ] . concat ( args )
190
+ [ 'setValue' ] . concat ( valueArgs )
181
191
) ;
182
192
} ;
183
193
0 commit comments