Skip to content

Commit 50c793b

Browse files
committed
Typescriptify
1 parent 5e13d31 commit 50c793b

File tree

1 file changed

+80
-80
lines changed

1 file changed

+80
-80
lines changed

src/qimessaging.ts

Lines changed: 80 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -9,37 +9,47 @@
99
import io from 'nao-socket.io';
1010

1111
export class QiSession {
12-
connected: Boolean = false;
12+
connected: any;
1313
disconnected: any;
1414
host: any;
1515
service: any;
16-
17-
constructor(ipAddress: string = 'nao.local', port: string = '80') {
16+
_dfd: Array<any>;
17+
_sigs: Array<any>;
18+
_idm: number;
19+
_socket: any;
20+
21+
constructor(
22+
ipAddress: string = 'nao.local',
23+
port: string = '80',
24+
connected?: any,
25+
disconnected?: any
26+
) {
27+
this.connected = connected;
28+
this.disconnected = disconnected;
1829
console.log('DBG Emile qim about to connect w/17');
19-
let _socket = io.connect('nao:nao@' + ipAddress + ':' + port, {
30+
let _socket = this._socket = io.connect('nao:nao@' + ipAddress + ':' + port, {
2031
resource: 'libs/qimessaging/2/socket.io',
2132
'force new connection': true,
2233
});
2334
console.log('DBG Emile qim connecting..');
24-
let _dfd = new Array();
25-
let _sigs = new Array();
26-
let _idm = 0;
35+
let _dfd = this._dfd = new Array();
36+
let _sigs = this._sigs = new Array();
37+
this._idm = 0;
2738

2839
interface replyType {
2940
__MetaObject?: any,
3041
[key: string]: any,
3142
}
3243

3344

34-
_socket.on('reply', function (data: any) {
45+
_socket.on('reply', (data: any) => {
3546
console.log('DBG Emile qim reply');
3647
// @ts-ignore
3748
window['datata'] = data;
3849
console.log("here's the datata", data); // REMOVE
3950

4051
let idm = data['idm'];
4152
if (data['result'] != null && data['result']['metaobject'] != undefined) {
42-
// let o = new Object();
4353
let replyObject: replyType = {
4454
__MetaObject: data['result']['metaobject'],
4555
};
@@ -50,17 +60,17 @@ export class QiSession {
5060

5161
for (let i in methods) {
5262
let methodName = methods[i]['name'];
53-
replyObject[methodName] = createMetaCall(pyobj, methodName, 'data');
63+
replyObject[methodName] = this.createMetaCall(pyobj, methodName, 'data');
5464
}
5565
let signals = replyObject.__MetaObject['signals'];
5666
for (let i in signals) {
5767
let signalName = signals[i]['name'];
58-
replyObject[signalName] = createMetaSignal(pyobj, signalName, false);
68+
replyObject[signalName] = this.createMetaSignal(pyobj, signalName, false);
5969
}
6070
let properties = replyObject.__MetaObject['properties'];
6171
for (let i in properties) {
6272
let propertyName = properties[i]['name'];
63-
replyObject[propertyName] = createMetaSignal(pyobj, propertyName, true);
73+
replyObject[propertyName] = this.createMetaSignal(pyobj, propertyName, true);
6474
}
6575
_dfd[idm].resolve(replyObject);
6676

@@ -87,100 +97,90 @@ export class QiSession {
8797
}
8898
});
8999

90-
_socket.on('signal', function (data: any) {
100+
_socket.on('signal', (data: any) => {
91101
console.log("DBG Emile qim signal");
92102
let res = data['result'];
93103
let callback = _sigs[res['obj']][res['signal']][res['link']];
94104
if (callback != undefined) {
95-
// @ts-ignore
96105
callback.apply(this, res['data']);
97106
}
98107
});
99108

100-
_socket.on('disconnect', function (data: any) {
109+
_socket.on('disconnect', (data: any) => {
101110
console.log("DBG Emile qim disconnect");
102111
for (let idm in _dfd) {
103112
_dfd[idm].reject('Call ' + idm + ' canceled: disconnected');
104113
delete _dfd[idm];
105114
}
106-
// @ts-ignore
115+
107116
if (this.disconnected) {
108-
// disconnected();
117+
this.disconnected();
109118
console.log('DBG Isabel disconnected');
110119
}
111120
});
112121

113-
function createMetaCall(obj: any, member: any, data: any) {
114-
return function () {
115-
let idm = ++_idm;
116-
let args = Array.prototype.slice.call(arguments, 0);
117-
let promise = new Promise(function (resolve, reject) {
118-
_dfd[idm] = { resolve: resolve, reject: reject };
119-
});
120-
if (args[0] == 'connect') {
121-
_dfd[idm].__cbi = data;
122-
}
123-
_socket.emit('call', {
124-
idm: idm,
125-
params: { obj: obj, member: member, args: args },
126-
});
127-
return promise;
128-
};
129-
}
130-
131-
interface signalType {
132-
connect?: any;
133-
disconnect?: any;
134-
setValue?: any;
135-
value?: any;
136-
}
137-
138-
function createMetaSignal(obj: any, signal: any, isProperty: any) {
139-
let signalObject: signalType = {};
140-
_sigs[obj][signal] = new Array();
141-
signalObject.connect = function (cb: any) {
142-
return createMetaCall(obj, signal, {
143-
obj: obj,
144-
signal: signal,
145-
cb: cb,
146-
// @ts-ignore
147-
})('connect');
148-
};
149-
150-
// @ts-ignore
151-
signalObject.disconnect = function (l) {
152-
delete _sigs[obj][signal][l];
153-
// @ts-ignore
154-
return createMetaCall(obj, signal, 'data')('disconnect', l);
155-
};
156-
if (!isProperty) {
157-
return signalObject;
158-
}
159-
signalObject.setValue = function () {
160-
let args = Array.prototype.slice.call(arguments, 0);
161-
return createMetaCall(obj, signal, 'data').apply(
162-
this,
163-
// @ts-ignore
164-
['setValue'].concat(args)
165-
);
166-
};
167-
signalObject.value = function () {
168-
// @ts-ignore
169-
return createMetaCall(obj, signal, 'data')('value');
170-
};
171-
return signalObject;
172-
}
122+
173123

174-
this.service = createMetaCall('ServiceDirectory', 'service', 'data');
124+
125+
this.service = this.createMetaCall('ServiceDirectory', 'service', 'data');
175126
// let _self = this;
176-
_socket.on('connect', function () {
127+
_socket.on('connect', () => {
177128
console.log("DBG Emile qim connect");
178129
// @ts-ignore
179130
if (this.connected) {
180-
// connected(_self);
131+
this.connected(this);
181132
console.log('DBG Isabel already connected');
182133
}
183134
});
184135
console.log("DBG Emile qim done with init");
185136
}
137+
138+
createMetaCall(obj: any, member: any, data: any) {
139+
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 };
144+
});
145+
if (args[0] == 'connect') {
146+
this._dfd[idm].__cbi = data;
147+
}
148+
this._socket.emit('call', {
149+
idm: idm,
150+
params: { obj: obj, member: member, args: args },
151+
});
152+
return promise;
153+
};
154+
}
155+
156+
createMetaSignal(obj: any, signal: any, isProperty: any) {
157+
let signalObject: any = {};
158+
this._sigs[obj][signal] = new Array();
159+
signalObject.connect = (cb: any) => {
160+
return this.createMetaCall(obj, signal, {
161+
obj: obj,
162+
signal: signal,
163+
cb: cb,
164+
})('connect');
165+
};
166+
167+
signalObject.disconnect = (l: any) => {
168+
delete this._sigs[obj][signal][l];
169+
return this.createMetaCall(obj, signal, 'data')('disconnect', l);
170+
};
171+
if (!isProperty) {
172+
return signalObject;
173+
}
174+
signalObject.setValue = () => {
175+
let args = Array.prototype.slice.call(arguments, 0);
176+
return this.createMetaCall(obj, signal, 'data').apply(
177+
this,
178+
['setValue'].concat(args)
179+
);
180+
};
181+
signalObject.value = () => {
182+
return this.createMetaCall(obj, signal, 'data')('value');
183+
};
184+
return signalObject;
185+
}
186186
}

0 commit comments

Comments
 (0)