Example #1
0
        public bool connect(JsonObject user, Action <JsonObject> handshakeCallback)
        {
            ManualResetEvent timeoutEvent = new ManualResetEvent(false);

            try
            {
                protocol.start(user, (JsonObject json) =>
                {
                    timeoutEvent.Set();
                    try
                    {
                        if (handshakeCallback != null)
                        {
                            handshakeCallback(json);
                        }
                    }
                    catch (SocketException e)
                    {
                        if (netWorkState != NetWorkState.DISCONNECTED &&
                            netWorkState != NetWorkState.TIMEOUT &&
                            netWorkState != NetWorkState.ERROR &&
                            netWorkState != NetWorkState.KICK)
                        {
                            error();
                        }
                    }
                });

                timeoutEvent.WaitOne(timeoutMSec, false);
                if (!protocol.isWaking())
                {
                    timeout();
                }
                return(true);
            }
            catch (Exception e)
            {
                Trace.TraceInformation(e.ToString());
            }
            timeoutEvent.Close();
            timeoutEvent = null;
            error();
            return(false);
        }