Skip to content

Commit 071809f

Browse files
committed
Prettify qimessaging
1 parent 962f7f6 commit 071809f

File tree

2 files changed

+169
-154
lines changed

2 files changed

+169
-154
lines changed

.github/workflows/build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ jobs:
3333
- name: Linting
3434
if: ${{ matrix.os == 'ubuntu-latest' }}
3535
run: |
36-
echo "FIXME: yarn run lint:check"
36+
yarn run lint:check
3737
3838
- name: Check docs can be build + links
3939
if: ${{ matrix.os == 'ubuntu-latest' }}

src/qimessaging.ts

Lines changed: 168 additions & 153 deletions
Original file line numberDiff line numberDiff line change
@@ -1,168 +1,183 @@
11
/*
2-
** Copyright (C) Aldebaran Robotics
3-
** See COPYING for the license
4-
**
5-
** Author(s):
6-
** - Laurent LEC <llec@aldebaran-robotics.com>
7-
**
8-
*/
9-
import io from "nao-socket.io";
2+
** Copyright (C) Aldebaran Robotics
3+
** See COPYING for the license
4+
**
5+
** Author(s):
6+
** - Laurent LEC <llec@aldebaran-robotics.com>
7+
**
8+
*/
9+
import io from 'nao-socket.io';
1010

1111
export class QiSession {
12-
connected: Boolean = false;
13-
disconnected: any;
14-
host: any;
15-
service: any;
12+
connected: Boolean = false;
13+
disconnected: any;
14+
host: any;
15+
service: any;
1616

17-
constructor(ipAddress: string = "nao.local", port: string = "80") {
18-
console.log("DBG Emile qim about to connect w/17");
19-
// @ts-ignore
20-
window["oioi"] = io;
21-
let _socket = io.connect(
22-
"nao:nao@" + ipAddress + ":" + port,
23-
{ resource: "libs/qimessaging/2/socket.io",
24-
'force new connection': true });
25-
// console.log("DBG Emile qim connecting..");
26-
let _dfd = new Array();
27-
let _sigs = new Array();
28-
let _idm = 0;
29-
30-
interface MetaObject {
31-
__MetaObject?: any;
32-
}
17+
constructor(ipAddress: string = 'nao.local', port: string = '80') {
18+
console.log('DBG Emile qim about to connect w/17');
19+
let _socket = io.connect('nao:nao@' + ipAddress + ':' + port, {
20+
resource: 'libs/qimessaging/2/socket.io',
21+
'force new connection': true,
22+
});
23+
console.log('DBG Emile qim connecting..');
24+
let _dfd = new Array();
25+
let _sigs = new Array();
26+
let _idm = 0;
3327

34-
_socket.on('reply', function (data : any) {
35-
// console.log("DBG Emile qim reply"); REMOVE
36-
let idm = data["idm"];
37-
if (data["result"] != null && data["result"]["metaobject"] != undefined) {
38-
// let o = new Object();
39-
let o : MetaObject = {
40-
__MetaObject: data["result"]["metaobject"],
41-
}
28+
interface MetaObject {
29+
__MetaObject?: any;
30+
}
4231

43-
let pyobj = data["result"]["pyobject"];
44-
_sigs[pyobj] = new Array();
45-
let methods = o.__MetaObject["methods"];
32+
_socket.on('reply', function (data: any) {
33+
console.log('DBG Emile qim reply');
34+
// @ts-ignore
35+
window['datata'] = data;
36+
console.log("here's the datata");
4637

47-
for (let i in methods) {
48-
let methodName = methods[i]["name"];
49-
// @ts-ignore
50-
o[methodName] = createMetaCall(pyobj, methodName, "data");
51-
}
52-
let signals = o.__MetaObject["signals"];
53-
for (let i in signals) {
54-
let signalName = signals[i]["name"];
55-
// @ts-ignore
56-
o[signalName] = createMetaSignal(pyobj, signalName, false);
57-
}
58-
let properties = o.__MetaObject["properties"];
59-
for (let i in properties) {
60-
let propertyName = properties[i]["name"];
61-
// @ts-ignore
62-
o[propertyName] = createMetaSignal(pyobj, propertyName, true);
63-
}
64-
_dfd[idm].resolve(o);
65-
}
66-
else {
67-
if (_dfd[idm].__cbi != undefined) {
68-
let cbi = _dfd[idm].__cbi;
69-
_sigs[cbi["obj"]][cbi["signal"]][data["result"]] = cbi["cb"];
70-
}
71-
_dfd[idm].resolve(data["result"]);
72-
}
73-
delete _dfd[idm];
74-
});
75-
_socket.on('error', function (data : any) {
76-
// console.log("DBG Emile qim error"); REMOVE
77-
if (data["idm"] != undefined) {
78-
_dfd[data["idm"]].reject(data["result"]);
79-
delete _dfd[data["idm"]];
80-
}
81-
});
82-
_socket.on('signal', function (data : any) {
83-
// console.log("DBG Emile qim signal"); REMOVE
84-
let res = data["result"];
85-
let callback = _sigs[res["obj"]][res["signal"]][res["link"]];
86-
if (callback != undefined) {
87-
// @ts-ignore
88-
callback.apply(this, res["data"]);
89-
}
90-
});
91-
_socket.on('disconnect', function (data : any) {
92-
// console.log("DBG Emile qim disconnect"); REMOVE
93-
for (let idm in _dfd) {
94-
_dfd[idm].reject("Call " + idm + " canceled: disconnected");
95-
delete _dfd[idm];
96-
}
97-
// @ts-ignore
98-
if (this.disconnected) {
99-
// disconnected();
100-
console.log("DBG Isabel disconnected");
101-
}
102-
});
103-
function createMetaCall(obj : any, member : any, data : any) {
104-
return function () {
105-
let idm = ++_idm;
106-
let args = Array.prototype.slice.call(arguments, 0);
107-
let promise = new Promise(function (resolve, reject) {
108-
_dfd[idm] = { resolve: resolve, reject: reject };
109-
});
110-
if (args[0] == "connect") {
111-
_dfd[idm].__cbi = data;
112-
}
113-
_socket.emit('call', { idm: idm, params: { obj: obj, member: member, args: args } });
114-
return promise;
115-
};
116-
}
38+
let idm = data['idm'];
39+
if (data['result'] != null && data['result']['metaobject'] != undefined) {
40+
// let o = new Object();
41+
let o: MetaObject = {
42+
__MetaObject: data['result']['metaobject'],
43+
};
11744

118-
interface sObject {
119-
connect?: any;
120-
disconnect?: any;
121-
setValue?: any;
122-
value?: any;
45+
let pyobj = data['result']['pyobject'];
46+
_sigs[pyobj] = new Array();
47+
let methods = o.__MetaObject['methods'];
12348

124-
};
125-
function createMetaSignal(obj : any, signal : any, isProperty : any) {
126-
// let s = new Object();
127-
let s : sObject = {};
128-
_sigs[obj][signal] = new Array();
129-
s.connect = function (cb : any) {
130-
// @ts-ignore
131-
return createMetaCall(obj, signal, { obj: obj, signal: signal, cb: cb })("connect");
132-
};
49+
for (let i in methods) {
50+
let methodName = methods[i]['name'];
51+
// @ts-ignore
52+
o[methodName] = createMetaCall(pyobj, methodName, 'data');
53+
}
54+
let signals = o.__MetaObject['signals'];
55+
for (let i in signals) {
56+
let signalName = signals[i]['name'];
57+
// @ts-ignore
58+
o[signalName] = createMetaSignal(pyobj, signalName, false);
59+
}
60+
let properties = o.__MetaObject['properties'];
61+
for (let i in properties) {
62+
let propertyName = properties[i]['name'];
63+
// @ts-ignore
64+
o[propertyName] = createMetaSignal(pyobj, propertyName, true);
65+
}
66+
_dfd[idm].resolve(o);
13367

134-
// @ts-ignore
135-
s.disconnect = function (l) {
136-
delete _sigs[obj][signal][l];
137-
// @ts-ignore
138-
return createMetaCall(obj, signal, "data")("disconnect", l);
139-
};
140-
if (!isProperty) {
141-
return s;
142-
}
143-
s.setValue = function () {
144-
let args = Array.prototype.slice.call(arguments, 0);
145-
// @ts-ignore
146-
return createMetaCall(obj, signal, "data").apply(this, ["setValue"].concat(args));
147-
};
148-
s.value = function () {
149-
// @ts-ignore
150-
return createMetaCall(obj, signal, "data")("value");
151-
};
152-
return s;
68+
console.log('What is this o');
69+
// @ts-ignore
70+
window['ooo'] = o;
71+
// @ts-ignore
72+
window['dfd'] = _dfd;
73+
} else {
74+
if (_dfd[idm].__cbi != undefined) {
75+
let cbi = _dfd[idm].__cbi;
76+
_sigs[cbi['obj']][cbi['signal']][data['result']] = cbi['cb'];
15377
}
78+
_dfd[idm].resolve(data['result']);
79+
}
80+
delete _dfd[idm];
81+
});
82+
_socket.on('error', function (data: any) {
83+
console.log('DBG Emile qim error');
84+
if (data['idm'] != undefined) {
85+
_dfd[data['idm']].reject(data['result']);
86+
delete _dfd[data['idm']];
87+
}
88+
});
89+
_socket.on('signal', function (data: any) {
90+
// console.log("DBG Emile qim signal"); REMOVE
91+
let res = data['result'];
92+
let callback = _sigs[res['obj']][res['signal']][res['link']];
93+
if (callback != undefined) {
94+
// @ts-ignore
95+
callback.apply(this, res['data']);
96+
}
97+
});
98+
_socket.on('disconnect', function (data: any) {
99+
// console.log("DBG Emile qim disconnect"); REMOVE
100+
for (let idm in _dfd) {
101+
_dfd[idm].reject('Call ' + idm + ' canceled: disconnected');
102+
delete _dfd[idm];
103+
}
104+
// @ts-ignore
105+
if (this.disconnected) {
106+
// disconnected();
107+
console.log('DBG Isabel disconnected');
108+
}
109+
});
110+
function createMetaCall(obj: any, member: any, data: any) {
111+
return function () {
112+
let idm = ++_idm;
113+
let args = Array.prototype.slice.call(arguments, 0);
114+
let promise = new Promise(function (resolve, reject) {
115+
_dfd[idm] = { resolve: resolve, reject: reject };
116+
});
117+
if (args[0] == 'connect') {
118+
_dfd[idm].__cbi = data;
119+
}
120+
_socket.emit('call', {
121+
idm: idm,
122+
params: { obj: obj, member: member, args: args },
123+
});
124+
return promise;
125+
};
126+
}
154127

155-
this.service = createMetaCall("ServiceDirectory", "service", "data");
156-
// let _self = this;
157-
_socket.on('connect', function () {
158-
// console.log("DBG Emile qim connect"); REMOVE
159-
// @ts-ignore
160-
if (this.connected) {
161-
// connected(_self);
162-
console.log("DBG Isabel already connected");
128+
interface sObject {
129+
connect?: any;
130+
disconnect?: any;
131+
setValue?: any;
132+
value?: any;
133+
}
134+
function createMetaSignal(obj: any, signal: any, isProperty: any) {
135+
// let s = new Object();
136+
let s: sObject = {};
137+
_sigs[obj][signal] = new Array();
138+
s.connect = function (cb: any) {
139+
return createMetaCall(obj, signal, {
140+
obj: obj,
141+
signal: signal,
142+
cb: cb,
143+
// @ts-ignore
144+
})('connect');
145+
};
163146

164-
}
165-
});
166-
// console.log("DBG Emile qim done with init"); REMOVE
147+
// @ts-ignore
148+
s.disconnect = function (l) {
149+
delete _sigs[obj][signal][l];
150+
// @ts-ignore
151+
return createMetaCall(obj, signal, 'data')('disconnect', l);
152+
};
153+
if (!isProperty) {
154+
return s;
155+
}
156+
s.setValue = function () {
157+
let args = Array.prototype.slice.call(arguments, 0);
158+
return createMetaCall(obj, signal, 'data').apply(
159+
this,
160+
// @ts-ignore
161+
['setValue'].concat(args)
162+
);
163+
};
164+
s.value = function () {
165+
// @ts-ignore
166+
return createMetaCall(obj, signal, 'data')('value');
167+
};
168+
return s;
167169
}
170+
171+
this.service = createMetaCall('ServiceDirectory', 'service', 'data');
172+
// let _self = this;
173+
_socket.on('connect', function () {
174+
console.log("DBG Emile qim connect");
175+
// @ts-ignore
176+
if (this.connected) {
177+
// connected(_self);
178+
console.log('DBG Isabel already connected');
179+
}
180+
});
181+
console.log("DBG Emile qim done with init");
182+
}
168183
}

0 commit comments

Comments
 (0)