public void Dispose()
 {
     foreach (var @delegate in OnMessageHandler?.GetInvocationList() ?? new Delegate[] {})
     {
         OnMessageHandler -= @delegate as MessageEventHandler;
     }
 }
Exemple #2
0
        private void ParsePacket(int start, int end)
        {
            if (buffer[start] != 0x55 && buffer[start + 1] != 0xFF)
            {
                RaiseError(new Exception("Illegal start for packet! Expected 0x55, 0xFF and got " + printByte(buffer[start]) + ", " + printByte(buffer[start + 1]) + "!"));
                return;
            }
            if (buffer[end - 2] != 0x55 && buffer[end - 1] != 0x00)
            {
                RaiseError(new Exception("Illegal end for packet! Expected 0x55, 0x00 and got " + printByte(buffer[start]) + ", " + printByte(buffer[start + 1]) + "!"));
                return;
            }
            if (end - start < 5)
            {
                RaiseError(new Exception("Illegal packet size. Expected at least one byte between start and end of packet!"));
                return;
            }
            byte             messageType = buffer[start + 2];
            OnMessageHandler handler     = null;

            if (messageCallbacks.TryGetValue(messageType, out handler))
            {
                byte[] data = new byte[end - start - 5];
                Buffer.BlockCopy(buffer, start + 3, data, 0, end - start - 5);
                data = UnescapeStream(data);
                handler?.Invoke(this, new MessageEventArgs(data));
            }
            else
            {
                RaiseError(new Exception("Unknown message type " + printByte(messageType) + " received on input stream!"));
            }
        }
Exemple #3
0
    public void Look(WebCamTexture texture, OnMessageHandler callback = null)
    {
        Texture2D snap = new Texture2D(texture.width, texture.height);

        snap.SetPixels(texture.GetPixels());
        snap.Apply();
        Look(snap, callback);
    }
Exemple #4
0
        public static void WsAddOnMessage(uint objectId, OnMessageHandler callback)
        {
            if (!JslibInterop.onMessageHandlers.ContainsKey(objectId))
            {
                JslibInterop.onMessageHandlers[objectId] = null;
            }

            JslibInterop.onMessageHandlers[objectId] += callback;
        }
 private void Awake()
 {
     instance                  = this;
     connection                = new Connection(ServerPath, JwtSecret);
     messageHandler            = new OnMessageHandler(DefaultTag);
     connection.MessageHandler = messageHandler;
     connection.SubscribeOnOpen(OnOpen);
     connection.SubscribeOnClose(OnClose);
 }
Exemple #6
0
        public static void WsRemoveOnMessage(uint objectId, OnMessageHandler callback)
        {
            if (!JslibInterop.onMessageHandlers.ContainsKey(objectId))
            {
                return;
            }

            JslibInterop.onMessageHandlers[objectId] -= callback;
        }
Exemple #7
0
    protected void RaiseMessage(string language, string text, OnMessageHandler callback)
    {
        List <string> lines = new List <string>();

        lines.Add(text);
        RaiseMessage(new Message()
        {
            language = language, lines = lines
        }, callback);
    }
Exemple #8
0
        public void Subscribe(string dst, OnMessageHandler handler)
        {
            var msg = new StompFrame(ClientCommand.SUBSCRIBE);

            msg.AddHead("id", dst + "-" + 0);
            msg.AddHead("destination", dst);

            Enqueue(msg);
            subscribes.Add(dst, handler);
        }
Exemple #9
0
    protected void RaiseError(string text, OnMessageHandler callback)
    {
        List <string> lines = new List <string>();

        lines.Add(text);
        RaiseMessage(new Message()
        {
            error = true, lines = lines
        }, callback);
    }
Exemple #10
0
 protected void RaiseMessage(Message message, OnMessageHandler callback)
 {
     if (callback != null)
     {
         callback.Invoke(this, message);
     }
     else
     {
         _messages.Enqueue(message);
     }
 }
    private void Start()
    {
        GlobalObject     globalObject = GlobalObject.Instance;
        OnMessageHandler handler      = globalObject.MessageHandler;

        data = new ServerStatus();

        EventTag <ServerStatus> e = (EventTag <ServerStatus>)handler.SignTag("status", typeof(ServerStatus));

        e.Event += WriteState;
    }
Exemple #12
0
 public void AddMessageHandler(byte message, OnMessageHandler handler)
 {
     if (messageCallbacks.ContainsKey(message) == false)
     {
         messageCallbacks[message] = handler;
     }
     else
     {
         messageCallbacks[message] += handler;
     }
 }
Exemple #13
0
 //--------------------------------------------------------Constructor:----------------------------------------------------------------\\
 #region --Constructors--
 public MessageResponseHelper(IMessageSender messageSender, OnMessageHandler onMessage, OnTimeoutHandler onTimeout)
 {
     this.MESSAGE_SENDER = messageSender;
     this.ON_MESSAGE     = onMessage;
     this.ON_TIMEOUT     = onTimeout;
     this.timeout        = TimeSpan.FromSeconds(TIMEOUT_5_SEC);
     this.matchId        = true;
     this.sendId         = null;
     this.METHOD_SEMA    = new SemaphoreSlim(1, 1);
     this.TIMER_SEMA     = new SemaphoreSlim(1, 1);
     this.disposed       = false;
 }
Exemple #14
0
        public void Subscribe(string hash, OnMessageHandler messageHandler = null, OnSubscribedHandler subscribedHandler = null, OnMessageHandler deleteHandler = null)
        {
            Contract.Requires <ArgumentNullException>(hash != null);
            Contract.Requires <ArgumentException>(hash.Trim().Length > 0);
            Contract.Requires <ArgumentException>(Constants.STREAM_HASH_FORMAT.IsMatch(hash), Messages.INVALID_STREAM_HASH);

            if (!_subscriptions.Contains(hash))
            {
                _subscriptions.Add(hash);
            }

            if (messageHandler != null)
            {
                if (_messageHandlers.ContainsKey(hash))
                {
                    _messageHandlers[hash] = messageHandler;
                }
                else
                {
                    _messageHandlers.Add(hash, messageHandler);
                }
            }

            if (subscribedHandler != null)
            {
                if (_subscribedHandlers.ContainsKey(hash))
                {
                    _subscribedHandlers[hash] = subscribedHandler;
                }
                else
                {
                    _subscribedHandlers.Add(hash, subscribedHandler);
                }
            }

            if (deleteHandler != null)
            {
                if (_deleteHandlers.ContainsKey(hash))
                {
                    _deleteHandlers[hash] = deleteHandler;
                }
                else
                {
                    _deleteHandlers.Add(hash, deleteHandler);
                }
            }

            Trace.TraceInformation("Subscribing to stream: " + hash);

            var message = new { action = "subscribe", hash = hash };

            _connection.Send(JsonConvert.SerializeObject(message));
        }
Exemple #15
0
        public void OnBookMessage(L2PackageDto l2Book, BookType bookType)
        {
            if (l2Book.Type != L2PackageType.SNAPSHOT_FULL_REFRESH)
            {
                return;
            }
            AlgoDictionary[bookType] = l2Book;
            OnMessageHandler bookHandler = bookType == BookType.QUOTE ? QuoteMessageHandler :
                                           bookType == BookType.SOURCE ? SourceMessageHandler :
                                           bookType == BookType.TARGET ? TargetMessageHandler : HedgeMessageHandler;

            bookHandler?.Invoke(this);
        }
Exemple #16
0
        public void On(string ev, OnMessageHandler messageHandler)
        {
            if (messageHandlers.ContainsKey(ev))
            {
                messageHandlers[ev].Add(messageHandler);
            }
            else
            {
                messageHandlers.Add(ev, new List <OnMessageHandler>());

                messageHandlers[ev].Add(messageHandler);
            }
        }
Exemple #17
0
    public void RemoveListener(ushort key, OnMessageHandler handler)
    {
        if (dic.ContainsKey(key))
        {
            List <OnMessageHandler> listHandler = dic[key];

            listHandler.Remove(handler);

            if (listHandler.Count == 0)
            {
                dic.Remove(key);
            }
        }
    }
    void Start()
    {
        globalObject   = GlobalObject.Instance;
        messageHandler = globalObject.MessageHandler;

        EventTag <string> logoutResponse = (EventTag <string>)messageHandler.SignTag("logout/response", typeof(string));

        logoutResponse.Event += (sender, message) =>
        {
            Debug.Log("logout -> " + message.message);
        };

        Button button = GetComponent <Button>();

        button.onClick.AddListener(OnClick);
    }
Exemple #19
0
        public void Launch()
        {
            if (HostAddress == null)
            {
                UpdateStatus(ClientStatus.Disconnected);
                return;
            }

            Task.Run(() =>
            {
                var ipAddress = IPAddress.Parse(HostAddress.Ip);
                var remoteEp  = new IPEndPoint(ipAddress, HostAddress.Port);
                socket        = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
                socket.Connect(remoteEp);

                UpdateStatus(ClientStatus.Connected);

                SendMessage("hello");

                while (socket != null && socket.Connected)
                {
                    try
                    {
                        var bytes    = new byte[1024];
                        var bytesRec = socket.Receive(bytes);
                        if (bytesRec == 0)
                        {
                            break;
                        }
                        var message = Encoding.ASCII.GetString(bytes, 0, bytesRec);
                        while (socket.Available > 0)
                        {
                            bytesRec = socket.Receive(bytes);
                            message += Encoding.ASCII.GetString(bytes, 0, bytesRec);
                        }

                        OnMessageHandler?.Invoke(message);
                    }
                    catch (Exception ex)
                    {
                        break;
                    }
                }
                UpdateStatus(ClientStatus.Disconnected);
                socket?.Close();
            });
        }
Exemple #20
0
    public void AddListener(ushort key, OnMessageHandler handler)
    {
        List <OnMessageHandler> listHandler = null;

        if (dic.TryGetValue(key, out listHandler))
        {
            dic[key].Add(handler);
        }
        else
        {
            listHandler = new List <OnMessageHandler>();

            listHandler.Add(handler);

            dic[key] = listHandler;
        }
    }
Exemple #21
0
        public async Task ConnectWebSocket(OnMessageHandler onMessageHandler, OnConnectHandler onConnectHandler = null, OnCloseHandler onCloseHandler = null)
        {
            await Task.Run(async() =>
            {
                if (!Guid.TryParse(wsToken, out _))
                {
                    throw new ArgumentException("tokenの値が不正です, UUID形式で入力してください");
                }

                sakuraioSocket = new ClientWebSocket();
                try
                {
                    await sakuraioSocket.ConnectAsync(new Uri("wss://api.sakura.io/ws/v1/" + wsToken), CancellationToken.None);
                }
                catch (System.Net.WebSockets.WebSocketException)
                {
                    throw new WebSocketException("WebSocketの接続に失敗しました");
                }

                // 特に指定がなければ呼ばない
                onConnectHandler?.Invoke(true);

                while (sakuraioSocket.State == WebSocketState.Open)
                {
                    var buff = new ArraySegment <byte>(new byte[MessageBufferSize]);
                    var ret  = await sakuraioSocket.ReceiveAsync(buff, CancellationToken.None);

                    if (!ret.EndOfMessage)
                    {
                        continue;
                    }

                    var frameString = (new UTF8Encoding()).GetString(buff.Take(ret.Count).ToArray());
                    Console.WriteLine(frameString);

                    var cmsg = DeserializeChannelMessage(frameString);
                    if (cmsg == null)
                    {
                        continue;
                    }

                    onMessageHandler(cmsg);
                }
                onCloseHandler?.Invoke();
            });
        }
Exemple #22
0
    private void Query(Color32[] data, int width, int height, OnMessageHandler callback)
    {
        Thread thread = new Thread(new ThreadStart(() => {
            try
            {
                Result result = barcodeReader.Decode(data, width, height);
                if (result != null)
                {
                    RaiseMessage(result.Text, callback);
                }
            }
            catch (Exception ex)
            {
                RaiseError(ex.Message, callback);
            }
            Reset();
        }));

        thread.Start();
    }
    private void Start()
    {
        globalObject   = GlobalObject.Instance;
        messageHandler = globalObject.MessageHandler;

        EventTag <string> loginResponse =
            (EventTag <string>)messageHandler.SignTag("login/response", typeof(string));

        loginResponse.Event += (sender, message) =>
        {
            Debug.Log(message.message);
            if (message.data != null)
            {
                Debug.Log("we got something : " + message.data);
            }
        };

        Button button = GetComponent <Button>();

        button.onClick.AddListener(OnClick);
    }
    void Start()
    {
        globalObject   = GlobalObject.Instance;
        messageHandler = globalObject.MessageHandler;

        EventTag <Me> meResponse = (EventTag <Me>)messageHandler.SignTag("me/response", typeof(Me));

        meResponse.Event += (sender, message) =>
        {
            if (message.message != null)
            {
                Debug.Log("me -> " + message.message);
            }
            else
            {
                Debug.Log("me -> " + JsonConvert.SerializeObject(message.data));
            }
        };

        Button button = GetComponent <Button>();

        button.onClick.AddListener(OnClick);
    }
Exemple #25
0
 public abstract void Look(Texture2D texture, OnMessageHandler callback = null);
Exemple #26
0
 public Server(int port, OnMessageHandler handler)
 {
     this.port              = port;
     this.onMessageHandler += handler;
 }
 public void Publish(T message)
 {
     OnMessageHandler?.Invoke(message);
 }
Exemple #28
0
    private void QueryForText(byte[] data, OnMessageHandler callback)
    {
        // register callback support (required for WebClient)
        if (ServicePointManager.ServerCertificateValidationCallback == null)
        {
            AddCertificateChainValidation();
        }

        // make the web call
        using (WebClient client = new WebClient())
        {
            client.Headers.Add("Ocp-Apim-Subscription-Key", VisionKey);
            client.Headers.Add("Content-Type", "application/octet-stream");
            client.UploadDataCompleted += (object sender, UploadDataCompletedEventArgs e) =>
            {
                try
                {
                    if (e.Cancelled)
                    {
                        _status = StatusOptions.failed;
                        RaiseError("web call was cancelled.", callback);
                    }
                    else if (e.Error != null)
                    {
                        _status = StatusOptions.failed;
                        RaiseError(e.Error.Message, callback);
                    }
                    else
                    {
                        string       response_string = System.Text.Encoding.Default.GetString(e.Result);
                        TextResponse response_object = JsonUtility.FromJson <TextResponse>(response_string);
                        if (response_object.regions != null && response_object.regions.Count > 0)
                        {
                            List <string> lines = new List <string>();
                            response_object.regions.ForEach(region =>
                            {
                                region.lines.ForEach(line =>
                                {
                                    List <string> words = new List <string>();
                                    line.words.ForEach(word =>
                                    {
                                        words.Add(word.text);
                                    });
                                    lines.Add(string.Join(" ", words.ToArray()));
                                });
                            });

                            // translate if requested
                            if (!string.IsNullOrEmpty(TranslationKey) && !string.IsNullOrEmpty(TranslateTo) && TranslateTo != response_object.language)
                            {
                                Promise <string> accessToken_promise = QueryForAccessToken();
                                accessToken_promise.Done(() =>
                                {
                                    Promise <string> translation_promise = QueryForTranslation(string.Join(" ", lines.ToArray()), response_object.language, "en");
                                    translation_promise.Done((msg) =>
                                    {
                                        List <string> translated = new List <string>();
                                        translated.Add(msg);
                                        RaiseMessage(new Message()
                                        {
                                            language = "en", lines = translated
                                        }, callback);
                                    });
                                    translation_promise.Fail((msg) =>
                                    {
                                        RaiseError(msg, callback);
                                    });
                                });
                                accessToken_promise.Fail((msg) =>
                                {
                                    RaiseError(msg, callback);
                                });
                            }
                            else
                            {
                                RaiseMessage(new Message()
                                {
                                    language = response_object.language, lines = lines
                                }, callback);
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    _status = StatusOptions.failed;
                    RaiseError(ex.Message, callback);
                }
                Reset();
            };
            client.UploadDataAsync(new System.Uri("https://" + Region + ".api.cognitive.microsoft.com/vision/v1.0/ocr?language=unk&detectOrientation=false"), data);
        }
    }
Exemple #29
0
 public override void Look(Texture2D texture, OnMessageHandler callback)
 {
     QueryForText(texture.EncodeToPNG(), callback);
 }
Exemple #30
0
 public override void Look(Texture2D texture, OnMessageHandler callback)
 {
     Query(texture.GetPixels32(), texture.width, texture.height, callback);
 }
        public void Subscribe(string hash, OnMessageHandler messageHandler = null, OnSubscribedHandler subscribedHandler = null, OnMessageHandler deleteHandler = null)
        {
            Contract.Requires<ArgumentNullException>(hash != null);
            Contract.Requires<ArgumentException>(hash.Trim().Length > 0);
            Contract.Requires<ArgumentException>(Constants.STREAM_HASH_FORMAT.IsMatch(hash), Messages.INVALID_STREAM_HASH);

            if(!_subscriptions.Contains(hash))
                _subscriptions.Add(hash);

            if(messageHandler != null)
            {
                if (_messageHandlers.ContainsKey(hash))
                    _messageHandlers[hash] = messageHandler;
                else
                    _messageHandlers.Add(hash, messageHandler);
            }

            if (subscribedHandler != null)
            {
                if (_subscribedHandlers.ContainsKey(hash))
                    _subscribedHandlers[hash] = subscribedHandler;
                else
                    _subscribedHandlers.Add(hash, subscribedHandler);
            }

            if (deleteHandler != null)
            {
                if (_deleteHandlers.ContainsKey(hash))
                    _deleteHandlers[hash] = deleteHandler;
                else
                    _deleteHandlers.Add(hash, deleteHandler);
            }

            Trace.TraceInformation("Subscribing to stream: " + hash);

            var message = new { action = "subscribe", hash = hash };
            _connection.Send(JsonConvert.SerializeObject(message));
        }