Ejemplo n.º 1
0
    // Static

    public static ORTimer Execute(GameObject target, float duration, string message)
    {
        GameObject go    = new GameObject("ORTimer");
        ORTimer    timer = go.AddComponent <ORTimer>();

        timer.target   = target;
        timer.duration = duration;
        timer.message  = message;

        go.transform.parent = target.transform;

        return(timer);
    }
Ejemplo n.º 2
0
    private void Update()
    {
        while (_events.Count > 0)
        {
            ORTCPEventType eventType = _events.Dequeue();

            ORTCPEventParams eventParams = new ORTCPEventParams();
            eventParams.eventType = eventType;
            eventParams.client    = this;
            eventParams.socket    = _client;

            if (eventType == ORTCPEventType.Connected)
            {
                if (verbose)
                {
                    print("[{name}] Connnected to server");
                }
                if (serverDelegate != null)
                {
                    serverDelegate.OnServerConnect(eventParams);
                }
                Send(isShowControl?"100":GameManager.StatusMsgBackup);
            }
            else if (eventType == ORTCPEventType.Disconnected)
            {
                if (verbose)
                {
                    print("[{name}] Disconnnected from server");
                }
                if (serverDelegate != null)
                {
                    serverDelegate.OnClientDisconnect(eventParams);
                }

                _reader.Close();
                _writer.Close();
                _client.Close();

                if (autoConnectOnDisconnect)
                {
                    ORTimer.Execute(gameObject, disconnectTryInterval, "OnDisconnectTimer");
                }
            }
            else if (eventType == ORTCPEventType.DataReceived)
            {
                if (socketType == ORTCPSocketType.Text)
                {
                    eventParams.message = _messages.Dequeue();
                    if (verbose)
                    {
                        print("[{name}] DataReceived: " + eventParams.message);
                    }

                    if (OnTCPMessageRecived != null)
                    {
                        OnTCPMessageRecived(eventParams);
                    }
                }
                else
                {
                    eventParams.packet = _packets.Dequeue();
                }
                if (serverDelegate != null)
                {
                    serverDelegate.OnDataReceived(eventParams);
                }
            }
            else if (eventType == ORTCPEventType.ConnectionRefused)
            {
                if (verbose)
                {
                    print("[{name}] ConnectionRefused... will try again...");
                }
                if (autoConnectOnConnectionRefused)
                {
                    ORTimer.Execute(gameObject, connectionRefusedTryInterval, "OnConnectionRefusedTimer");
                }
            }
        }
    }
Ejemplo n.º 3
0
 private void OnConnectionRefusedTimer(ORTimer timer)
 {
     Connect();
 }
Ejemplo n.º 4
0
 private void OnDisconnectTimer(ORTimer timer)
 {
     Connect();
 }
Ejemplo n.º 5
0
    void Start()
    {
        if (!this.IsConnected)
        {
            Connect();
        }

        Observable
        .Interval(TimeSpan.FromSeconds(1))
        .Where(x => eventQueue.Count > 0)
        .Subscribe(x =>
        {
            eTCPEventType eventType = eventQueue.Dequeue();

            TCPEventParams eventParams = new TCPEventParams();
            eventParams.eventType      = eventType;
            eventParams.client         = this;
            eventParams.socket         = client;

            if (eventType == eTCPEventType.Connected)
            {
                if (serverDelegate != null)
                {
                    serverDelegate.OnServerConnect(eventParams);
                }
            }
            else if (eventType == eTCPEventType.Disconnected)
            {
                if (serverDelegate != null)
                {
                    serverDelegate.OnClientDisconnect(eventParams);
                }

                streamReader.Close();
                streamWriter.Close();
                client.Close();
            }
            else if (eventType == eTCPEventType.DataReceived)
            {
                if (socketType == eTCPSocketType.Text)
                {
                    eventParams.message = messageQueue.Dequeue();

                    if (OnTCPMessageReceived != null)
                    {
                        OnTCPMessageReceived(eventParams);
                    }
                }
                else if (socketType == eTCPSocketType.Binary)
                {
                    eventParams.packet = packetsQueue.Dequeue();
                }

                if (serverDelegate != null)
                {
                    serverDelegate.OnDataReceived(eventParams);
                }
            }
            else if (eventType == eTCPEventType.ConnectionRefused)
            {
                if (verbose)
                {
                    print("[TCPClient] Connection refused. Trying again...");
                }

                if (autoConnectOnConnectionRefused)
                {
                    ORTimer.Execute(this.gameObject, connectionRefusedTryInterval, "OnConnectionRefusedTimer");
                }
            }
        });
    }