source: uKadecot/trunk/tools/EcnlControllerUI/EcnlControllerUI/WampClient.cs

Last change on this file was 148, checked in by coas-nagasima, 8 years ago

メッセージバッファ領域がなくなったときにWebSocketパケットを誤って処理してしまうのを修正。
Ethernet送信バッファが取れないときにパケットが送信できなかったのを修正。
その他、処理の安定性の向上。

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
  • Property svn:mime-type set to text/x-csharp
File size: 20.4 KB
Line 
1using System;
2using System.Collections;
3using System.Collections.Generic;
4using System.Html;
5using System.Net.WebSockets;
6using System.Diagnostics;
7
8namespace Kadecot
9{
10 public class WampClient
11 {
12 //delegate
13 public delegate void errCallback(string err);
14
15 //WebSocket
16 private WebSocket webSocket;
17
18 private bool challnge_flag;
19 private string url;
20 // private List<string> plotocols;
21 private string[] plotocols = { "wamp.2.json" };
22 private bool on_open_flag;
23 private int request_id;
24 private errCallback errorCallback;
25 private Dictionary<int, int> subscription_id_list;
26 //public string origin{ get; private set;}
27
28 //WAMP SubPlotocol
29 private WampClientCore wampClientCore;
30
31 // Use this for initialization
32 //public void Awake () {
33 public WampClient()
34 {
35 challnge_flag = false;
36 url = null;
37 webSocket = null;
38 on_open_flag = false;
39 errorCallback = null;
40 request_id = 1;
41 subscription_id_list = new Dictionary<int, int>();
42 //origin = "http://UnityKadecotPlugin/";
43
44 wampClientCore = new WampClientCore();
45 }
46
47 // WebSocket Connectioon
48 public void connect(string serverIp)
49 {
50 System.Diagnostics.Debug.WriteLine("[WAMP Client] websocket connecting");
51 if (on_open_flag) {
52 System.Diagnostics.Debug.WriteLine("[WAMP Client] websocket already connected.");
53 return;
54 }
55 if (!String.IsNullOrEmpty(serverIp)) {
56 url = serverIp;//port : 41314
57 }
58 else {
59 url = "ws://localhost:8080/";
60 }
61 webSocket = new WebSocket(url, plotocols);
62 //webSocket.Origin = origin;
63 webSocket.OnOpen += OnOpen;
64 webSocket.OnMessage += OnMessage;
65 webSocket.OnClose += OnClose;
66 webSocket.OnError += OnError;
67
68 //webSocket.Connect();
69 }
70
71 public void disconnect()
72 {
73 System.Diagnostics.Debug.WriteLine("[WAMP Client] websocket disconnecting");
74 webSocket.Close();
75 }
76
77 public void addOpenCallback(WampClientCore.WampCallback callback)
78 {
79 wampClientCore.openCallback = callback;
80 }
81 public void deleteOpenCallback()
82 {
83 wampClientCore.deleteOpenCallback();
84 }
85
86 public void addCloseCallback(WampClientCore.WampCallback callback)
87 {
88 wampClientCore.closeCallback = callback;
89 }
90 public void deleteCloseCallback()
91 {
92 wampClientCore.deleteCloseCallback();
93 }
94
95 public void addGoodbyeCallback(WampClientCore.WampCallbackArgs callback)
96 {
97 wampClientCore.goodbyeCallback = callback;
98 }
99 public void deleteGoodbyeCallback()
100 {
101 wampClientCore.deleteGoodbyeCallback();
102 }
103
104 public void addHeartbeatCallback(WampClientCore.WampCallbackArgs callback)
105 {
106 wampClientCore.heartbeatCallback = callback;
107 }
108 public void deleteHeartbeatCallback()
109 {
110 wampClientCore.deleteHeartbeatCallback();
111 }
112
113 public void addInvocationCallback(int request, WampClientCore.WampCallbackArgs callback)
114 {
115 wampClientCore.invocationCallback[request] = callback;
116 }
117
118 public void deleteInvocationCallback(int request)
119 {
120 wampClientCore.deleteInvocationCallback(request);
121 }
122
123
124 public string sendHello(string realm, string details, WampClientCore.WampCallbackArgs callback)
125 {
126
127 //serialize
128 string data;
129 data = WampSerializer.createHello(realm, details);
130
131 //encrypt data
132
133 //set callback
134 wampClientCore.helloCallback = callback;
135
136 //send data
137 if (on_open_flag == true) {
138 webSocket.Send(data);
139 }
140 else {
141 return null;
142 }
143
144 return data;
145 }
146
147 public string sendAuthenticate(string signature, string extra, WampClientCore.WampCallbackArgs callback)
148 {
149
150 //serialize
151 string data;
152 data = WampSerializer.createAuthenticate(signature, extra);
153
154 //encrypt data
155
156 //set callback
157 wampClientCore.authenticateCallback = callback;
158
159 //send data
160 if (this.on_open_flag) {
161 webSocket.Send(data);
162 }
163 else {
164 return null;
165 }
166
167 return data;
168 }
169
170 public string sendGoodbye(string details, string reason, WampClientCore.WampCallbackArgs callback)
171 {
172
173 //serialize
174 string data;
175 data = WampSerializer.createGoodbye(details, reason);
176
177 //encrypt data
178
179 //set callback
180 wampClientCore.goodbyeCallback = callback;
181
182 //send data
183 if (this.on_open_flag) {
184 webSocket.Send(data);
185 }
186 else {
187 return null;
188 }
189
190 return data;
191 }
192
193 public string sendHeartbeat(int incomingSeq, int outgoingSeq, string discard)
194 {
195
196 //serialize
197 string data;
198 data = WampSerializer.createHeartbeat(incomingSeq, outgoingSeq, discard);
199
200 //encrypt data
201
202 //send data
203 if (this.on_open_flag) {
204 webSocket.Send(data);
205 }
206 else {
207 return null;
208 }
209
210 return data;
211 }
212
213 public string sendError(int type, int request, string details, string error, string arguments, string argumentsKw)
214 {
215
216 //serialize
217 string data;
218 data = WampSerializer.createError(type, request, details, error, arguments, argumentsKw);
219
220 //encrypt data
221
222 //send data
223 if (this.on_open_flag) {
224 webSocket.Send(data);
225 }
226 else {
227 return null;
228 }
229
230 return data;
231 }
232
233
234 public string sendPublish(string options, string topic, string arguments, string argumentsKw, WampClientCore.WampCallbackArgs callback)
235 {
236
237 //serialize
238 string data;
239 int request;
240 request = this.request_id;
241 this.request_id++;
242 data = WampSerializer.createPublish(request, options, topic, arguments, argumentsKw);
243
244 //encrypt data
245
246 //set callback
247 wampClientCore.publishCallback[request] = callback;
248
249 //send data
250 if (this.on_open_flag) {
251 webSocket.Send(data);
252 }
253 else {
254 return null;
255 }
256
257 return data;
258 }
259
260 public string sendSubscribe(string options, string topic, WampClientCore.WampCallbackArgs eventfunc, WampClientCore.WampCallbackArgs callback)
261 {
262
263 //serialize
264 string data;
265 int request;
266 request = this.request_id;
267 this.request_id++;
268 data = WampSerializer.createSubscribe(request, options, topic);
269
270 //encrypt data
271
272 //set callback
273 wampClientCore.subscribeCallback[request] = callback;
274
275 //set event callback
276 wampClientCore.eventCallback[request] = eventfunc;
277
278 //send data
279 if (this.on_open_flag) {
280 webSocket.Send(data);
281 }
282 else {
283 return null;
284 }
285
286 return data;
287 }
288
289 public string sendUnsubscribe(int subscription, WampClientCore.WampCallbackArgs callback)
290 {
291
292 //serialize
293 string data;
294 int request;
295 request = this.request_id;
296 this.request_id++;
297 data = WampSerializer.createUnsubscribe(request, subscription);
298
299 //encrypt data
300
301 //set callback
302 wampClientCore.unsubscribeCallback[request] = callback;
303
304 //set Unsubscribe request id - subscription id
305 this.subscription_id_list[request] = subscription;
306
307 //send data
308 if (this.on_open_flag) {
309 webSocket.Send(data);
310 }
311 else {
312 return null;
313 }
314
315 return data;
316 }
317 /// <summary>
318 /// クライアントからメッセージを送ります
319 /// </summary>
320 /// <param name="options">deviceId</param>
321 /// <param name="procedure"></param>
322 /// <param name="arguments"></param>
323 /// <param name="argumentsKw">入力するデータ</param>
324 /// <param name="callback">コールバック</param>
325 /// <returns>データ</returns>
326 public string sendCall(string options, string procedure, string arguments, string argumentsKw, WampClientCore.WampCallbackArgs callback)
327 {
328
329 //serialize
330 string data;
331 int request;
332 request = this.request_id;
333 this.request_id++;
334 data = WampSerializer.createCall(request, options, procedure, arguments, argumentsKw);
335
336 //encrypt data
337
338 //set callback
339 wampClientCore.callCallback[request] = callback;
340
341 //send data
342 if (on_open_flag == true) {
343 webSocket.Send(data);
344 }
345 else {
346 return null;
347 }
348
349 return data;
350 }
351
352 public string sendCancel(int request, string options, WampClientCore.WampCallbackArgs callback)
353 {
354
355 //serialize
356 string data;
357 data = WampSerializer.createCancel(request, options);
358
359 //encrypt data
360
361 //set callback
362 wampClientCore.cancelCallback[request] = callback;
363
364 //send data
365 if (this.on_open_flag) {
366 webSocket.Send(data);
367 }
368 else {
369 return null;
370 }
371
372 return data;
373 }
374
375 public string sendRegister(string options, string procedure, WampClientCore.WampCallbackArgs callback)
376 {
377
378 //serialize
379 string data;
380 int request;
381 request = this.request_id;
382 this.request_id++;
383 data = WampSerializer.createRegister(request, options, procedure);
384
385 //encrypt data
386
387 //set callback
388 wampClientCore.registerCallback[request] = callback;
389
390 //send data
391 if (this.on_open_flag) {
392 webSocket.Send(data);
393 }
394 else {
395 return null;
396 }
397
398 return data;
399 }
400
401 public string sendUnregister(int registration, WampClientCore.WampCallbackArgs callback)
402 {
403
404 //serialize
405 string data;
406 int request;
407 request = this.request_id;
408 this.request_id++;
409 data = WampSerializer.createUnregister(request, registration);
410
411 //encrypt data
412
413 //set callback
414 wampClientCore.unregisterCallback[request] = callback;
415
416 //send data
417 if (this.on_open_flag) {
418 webSocket.Send(data);
419 }
420 else {
421 return null;
422 }
423
424 return data;
425 }
426
427 public string sendYield(int request, string options, string arguments, string argumentsKw)
428 {
429
430 //serialize
431 string data;
432 data = WampSerializer.createYield(request, options, arguments, argumentsKw);
433
434 //encrypt data
435
436 //send data
437 if (this.on_open_flag) {
438 webSocket.Send(data);
439 }
440
441 return data;
442 }
443
444 public void OnOpen(Event e)
445 {
446 System.Diagnostics.Debug.WriteLine("[WAMP Client] websocket connected");
447 on_open_flag = true;
448
449 WampClientCore.WampCallback callback = wampClientCore.openCallback;
450
451 if (callback != null) {
452 callback();
453 }
454 }
455
456 public void OnClose(Event e)
457 {
458 on_open_flag = false;
459 System.Diagnostics.Debug.WriteLine("[WAMP Client] websocket disconnected");
460 // webSocket = null;
461
462 WampClientCore.WampCallback callback = wampClientCore.closeCallback;
463
464 if (callback != null) {
465 callback();
466 }
467 }
468
469 public void OnError(Event e)
470 {
471 System.Diagnostics.Debug.WriteLine("[WAMP Client] websocket error");
472
473 dynamic/*ErrorEventArgs*/eea = (dynamic/*ErrorEventArgs*/)e;
474
475 System.Diagnostics.Debug.WriteLine("[wamp OnError] msg :" + (string)eea.message);
476 if (errorCallback != null) {
477 errorCallback(eea.message);
478 }
479 }
480
481
482 public void OnMessage(Event e)
483 {
484 dynamic/*MessageEventArgs*/ msg = (dynamic/*MessageEventArgs*/)e;
485
486 //System.Diagnostics.Debug.WriteLine("[wamp perser] msg :" + msg.ToString());
487 object data;
488 WampClientCore.WampCallbackArgs callback = null;
489
490 //decrypt data
491
492 //deserialize
493 try {
494 if (msg.data != null) {
495 data = WampDeserializer.Parse(msg.data);
496 }
497 else {
498 data = WampDeserializer.Parse((string)msg);
499 }
500 }
501 catch {
502 data = null;
503 }
504 if (data == null) {
505 System.Diagnostics.Debug.WriteLine("[wamp perser] Syntax error");
506 return;
507 }
508
509 List<object> list = (List<object>)data;
510 Int64 switchData = (Int64)list[0];
511 switch (switchData) {
512 case (Int64)WAMP_MSG_TYPE.WELCOME:
513 // WAMP SPEC: [WELCOME, Session|id, Details|dict]
514 if (this.challnge_flag) {
515 this.challnge_flag = false;
516 callback = wampClientCore.authenticateCallback;
517 if (callback != null) {
518 callback(data);
519 }
520 else {
521 System.Diagnostics.Debug.WriteLine("[wamp perser] WELCOME Callback does not exist.");
522 }
523 }
524 else {
525 callback = wampClientCore.helloCallback;
526 if (callback != null) {
527 callback(data);
528 }
529 else {
530 System.Diagnostics.Debug.WriteLine("[wamp perser] WELCOME Callback does not exist.");
531 }
532 }
533 break;
534 case (Int64)WAMP_MSG_TYPE.ABORT:
535 // WAMP SPEC: [ABORT, Details|dict, Reason|uri]
536 if (this.challnge_flag) {
537 this.challnge_flag = false;
538 callback = wampClientCore.authenticateCallback;
539 if (callback != null) {
540 callback(data);
541 }
542 else {
543 System.Diagnostics.Debug.WriteLine("[wamp perser] ABORT Callback does not exist.");
544 }
545 }
546 else {
547 callback = wampClientCore.helloCallback;
548 if (callback != null) {
549 callback(data);
550 }
551 else {
552 System.Diagnostics.Debug.WriteLine("[wamp perser] ABORT Callback does not exist.");
553 }
554 }
555 break;
556 case (Int64)WAMP_MSG_TYPE.CHALLENGE:
557 // advanced WAMP SPEC: [CHALLENGE, AuthMethod|string, Extra|dict]
558 this.challnge_flag = true;
559 callback = wampClientCore.helloCallback;
560 if (callback != null) {
561 callback(data);
562 }
563 else {
564 System.Diagnostics.Debug.WriteLine("[wamp perser] CHALLENGE Callback does not exist.");
565 }
566 break;
567
568 case (Int64)WAMP_MSG_TYPE.GOODBYE:
569 // WAMP SPEC: [GOODBYE, Details|dict, Reason|uri]
570 callback = wampClientCore.goodbyeCallback;
571 if (callback != null) {
572 callback(data);
573 }
574 else {
575 System.Diagnostics.Debug.WriteLine("[wamp perser] GOODBYE Callback does not exist.");
576 }
577 break;
578 case (Int64)WAMP_MSG_TYPE.HEARTBEAT:
579 // advanced WAMP SPEC: [AUTHENTICATE, Signature|string, Extra|dict]
580 callback = wampClientCore.heartbeatCallback;
581 if (callback != null) {
582 callback(data);
583 }
584 else {
585 System.Diagnostics.Debug.WriteLine("[wamp perser] HEARTBEAT Callback does not exist.");
586 }
587 break;
588 case (Int64)WAMP_MSG_TYPE.ERROR: {
589 // WAMP SPEC: [ERROR, REQUEST.Type|int, REQUEST.Request|id, Details|dict, Error|uri, (Arguments|list, ArgumentsKw|dict)]
590 Int64 switchDataSec = (Int64)list[1];
591 int request = (int)((Int64)list[2]);
592 switch (switchDataSec) {
593 case (Int64)WAMP_MSG_TYPE.SUBSCRIBE:
594 // WAMP SPEC: [ERROR, SUBSCRIBE, SUBSCRIBE.Request|id, Details|dict, Error|uri]
595 callback = wampClientCore.subscribeCallback[request];
596 if (callback != null) {
597 callback(data);
598 }
599 else {
600 System.Diagnostics.Debug.WriteLine("[wamp perser] SUBSCRIBE Callback does not exist.");
601 }
602 break;
603 case (Int64)WAMP_MSG_TYPE.UNSUBSCRIBE:
604 // WAMP SPEC: [ERROR, UNSUBSCRIBE, UNSUBSCRIBE.Request|id, Details|dict, Error|uri]
605 callback = wampClientCore.unsubscribeCallback[request];
606 if (callback != null) {
607 callback(data);
608 }
609 else {
610 System.Diagnostics.Debug.WriteLine("[wamp perser] UNSUBSCRIBE Callback does not exist.");
611 }
612 break;
613 case (Int64)WAMP_MSG_TYPE.PUBLISH:
614 // WAMP SPEC: [ERROR, PUBLISH, PUBLISH.Request|id, Details|dict, Error|uri]
615 callback = wampClientCore.publishCallback[request];
616 if (callback != null) {
617 callback(data);
618 }
619 else {
620 System.Diagnostics.Debug.WriteLine("[wamp perser] PUBLISH Callback does not exist.");
621 }
622 break;
623 case (Int64)WAMP_MSG_TYPE.INVOCATION:
624 // WAMP SPEC: [ERROR, INVOCATION, INVOCATION.Request|id, Details|dict, Error|uri]
625 // WAMP SPEC: [ERROR, INVOCATION, INVOCATION.Request|id, Details|dict, Error|uri, Arguments|list]
626 // WAMP SPEC: [ERROR, INVOCATION, INVOCATION.Request|id, Details|dict, Error|uri, Arguments|list, ArgumentsKw|dict]
627 callback = wampClientCore.invocationCallback[request];
628 if (callback != null) {
629 callback(data);
630 }
631 else {
632 System.Diagnostics.Debug.WriteLine("[wamp perser] INVOCATION Callback does not exist.");
633 }
634 break;
635 case (Int64)WAMP_MSG_TYPE.CALL:
636 // WAMP SPEC: [ERROR, CALL, CALL.Request|id, Details|dict, Error|uri]
637 // WAMP SPEC: [ERROR, CALL, CALL.Request|id, Details|dict, Error|uri, Arguments|list]
638 // WAMP SPEC: [ERROR, CALL, CALL.Request|id, Details|dict, Error|uri, Arguments|list, ArgumentsKw|dict]
639 callback = wampClientCore.callCallback[request];
640 if (callback != null) {
641 callback(data);
642 }
643 else {
644 System.Diagnostics.Debug.WriteLine("[wamp perser] CALL Callback does not exist.");
645 }
646 break;
647 case (Int64)WAMP_MSG_TYPE.REGISTER:
648 // WAMP SPEC: [ERROR, REGISTER, REGISTER.Request|id, Details|dict, Error|uri]
649 callback = wampClientCore.registerCallback[request];
650 if (callback != null) {
651 callback(data);
652 }
653 else {
654 System.Diagnostics.Debug.WriteLine("[wamp perser] REGISTER Callback does not exist.");
655 }
656 break;
657 case (Int64)WAMP_MSG_TYPE.UNREGISTER:
658 // WAMP SPEC: [ERROR, UNREGISTER, UNREGISTER.Request|id, Details|dict, Error|uri]
659 callback = wampClientCore.unregisterCallback[request];
660 if (callback != null) {
661 callback(data);
662 }
663 else {
664 System.Diagnostics.Debug.WriteLine("[wamp perser] UNREGISTER Callback does not exist.");
665 }
666 break;
667 default:
668 return;
669 }
670 break;
671 }
672
673 case (Int64)WAMP_MSG_TYPE.PUBLISHED:
674 // WAMP SPEC: [PUBLISHED, PUBLISH.Request|id, Publication|id]
675 callback = wampClientCore.publishCallback[(int)((Int64)(list[1]))];
676 if (callback != null) {
677 callback(data);
678 }
679 else {
680 System.Diagnostics.Debug.WriteLine("[wamp perser] Callback does not exist.");
681 }
682 break;
683 case (Int64)WAMP_MSG_TYPE.SUBSCRIBED:
684 // WAMP SPEC: [SUBSCRIBED, SUBSCRIBE.Request|id, Subscription|id]
685 int reqId = (int)((Int64)(list[1]));
686 int subId = (int)((Int64)(list[2]));
687 callback = wampClientCore.subscribeCallback[reqId];
688 if (callback != null) {
689 wampClientCore.eventCallback[subId] = wampClientCore.eventCallback[reqId];
690 wampClientCore.deleteEventCallback(reqId);
691 callback(data);
692 }
693 else {
694 System.Diagnostics.Debug.WriteLine("[wamp perser] Callback does not exist.");
695 }
696 break;
697 case (Int64)WAMP_MSG_TYPE.UNSUBSCRIBED:
698 // WAMP SPEC: [UNSUBSCRIBED, UNSUBSCRIBE.Request|id]
699 callback = wampClientCore.unsubscribeCallback[(int)((Int64)(list[1]))];
700 if (callback != null) {
701 wampClientCore.deleteEventCallback(this.subscription_id_list[(int)((Int64)(list[1]))]);
702 callback(data);
703 }
704 else {
705 System.Diagnostics.Debug.WriteLine("[wamp perser] Callback does not exist.");
706 }
707 break;
708 case (Int64)WAMP_MSG_TYPE.EVENT:
709 // WAMP SPEC: [EVENT, SUBSCRIBED.Subscription|id, PUBLISHED.Publication|id, Details|dict]
710 // WAMP SPEC: [EVENT, SUBSCRIBED.Subscription|id, PUBLISHED.Publication|id, Details|dict, PUBLISH.Arguments|list]
711 // WAMP SPEC: [EVENT, SUBSCRIBED.Subscription|id, PUBLISHED.Publication|id, Details|dict, PUBLISH.Arguments|list, PUBLISH.ArgumentKw|dict]
712 callback = wampClientCore.eventCallback[(int)((Int64)(list[1]))];
713 if (callback != null) {
714 callback(data);
715 }
716 else {
717 System.Diagnostics.Debug.WriteLine("[wamp perser] Callback does not exist.");
718 }
719 break;
720 case (Int64)WAMP_MSG_TYPE.RESULT:
721 // WAMP SPEC: [RESULT, CALL.Request|id, Details|dict]
722 // WAMP SPEC: [RESULT, CALL.Request|id, Details|dict, YIELD.Arguments|list]
723 // WAMP SPEC: [RESULT, CALL.Request|id, Details|dict, YIELD.Arguments|list, YIELD.ArgumentsKw|dict]
724 callback = wampClientCore.callCallback[(int)((Int64)(list[1]))];
725 if (callback != null) {
726 callback(data);
727 }
728 else {
729 System.Diagnostics.Debug.WriteLine("[wamp perser] RESULT Callback does not exist.");
730 }
731 break;
732
733 case (Int64)WAMP_MSG_TYPE.REGISTERED:
734 // WAMP SPEC: [REGISTERED, REGISTER.Request|id, Registration|id]
735 callback = wampClientCore.registerCallback[(int)((Int64)(list[1]))];
736 if (callback != null) {
737 callback(data);
738 }
739 else {
740 System.Diagnostics.Debug.WriteLine("[wamp perser] Callback does not exist.");
741 }
742 break;
743 case (Int64)WAMP_MSG_TYPE.UNREGISTERED:
744 // WAMP SPEC: [UNREGISTERED, UNREGISTER.Request|id]
745 callback = wampClientCore.unregisterCallback[(int)((Int64)(list[1]))];
746 if (callback != null) {
747 callback(data);
748 }
749 else {
750 System.Diagnostics.Debug.WriteLine("[wamp perser] Callback does not exist.");
751 }
752 break;
753 case (Int64)WAMP_MSG_TYPE.INVOCATION:
754 // WAMP SPEC: [INVOCATION, Request|id, REGISTERED.Registration|id, Details|dict]
755 // WAMP SPEC: [INVOCATION, Request|id, REGISTERED.Registration|id, Details|dict, CALL.Arguments|list]
756 // WAMP SPEC: [INVOCATION, Request|id, REGISTERED.Registration|id, Details|dict, CALL.Arguments|list, CALL.ArgumentsKw|dict]
757 callback = wampClientCore.invocationCallback[(int)((Int64)(list[1]))];
758 if (callback != null) {
759 callback(data);
760 }
761 else {
762 System.Diagnostics.Debug.WriteLine("[wamp perser] Callback does not exist.");
763 }
764 break;
765 case (Int64)WAMP_MSG_TYPE.INTERRUPT:
766 // advanced WAMP SPEC: [INTERRUPT, INVOCATION.Request|id, Options|dict]
767 callback = wampClientCore.interruptCallback[(int)((Int64)(list[1]))];
768 if (callback != null) {
769 callback(data);
770 }
771 else {
772 System.Diagnostics.Debug.WriteLine("[wamp perser] Callback does not exist.");
773 }
774 break;
775 default:
776 System.Diagnostics.Debug.WriteLine("[wamp perser] Unknown Message Type.\n" + list.ToString());
777 break;
778 }
779 }
780 public bool isConnecting()
781 {
782 return on_open_flag;
783 }
784 }
785}
Note: See TracBrowser for help on using the repository browser.