Exemplo n.º 1
0
            public result quickplay()
            {
                if (!tc.isConnected())
                {
                   return new result(false, "connection lost");
                }

                tcp.request req = new tcp.request((short)cmd.REQ_QUICKPLAY);
                if(!send(req))
                {
                    return new result(false, "network error: failed to send");
                }
                return new result();
            }
Exemplo n.º 2
0
            public result logout(int timeout)
            {
                if (!tc.isConnected())
                    return new result();

                tcp.request req = new tcp.request((short)cmd.REQ_LOGOUT);
                tcp.response rsp = send(req, timeout);
                if (rsp == null)
                    return new result();

                int res = rsp.nextInt();
                string msg = rsp.nextString();
                Console.WriteLine("cmd=[{0}], sn=[{1}], result=[{2}], errmsg=[{3}]", rsp.cmd, rsp.sn, res, msg);
                return new result(res==0, msg);
            }
Exemplo n.º 3
0
            private tcp.response send(tcp.request req, int timeout /* ms */)
            {
                // 1. add to req-rsp match table
                lock (this)
                {
                    match.Add(req.sn, null);
                }

                // 2. send request
                if (!req.send(tc))
                {
                    lock (this)
                    {
                        match.Remove(req.sn);
                    }
                    return null;
                }

                // 3. block wait
                tcp.response rsp = null;
                int tick = timeout > 100 ? 100 : timeout;
                while (tick > 0)
                {
                    timeout -= tick;
                    Thread.Sleep(tick);
                    tick = timeout > 100 ? 100 : timeout;

                    match.TryGetValue(req.sn, out rsp);
                    if (rsp != null)
                        break;
                }

                lock (this)
                {
                    match.Remove(req.sn);
                }
                return rsp;
            }
Exemplo n.º 4
0
            public result login(string usr, string passwd, int timeout /* ms */)
            {
                if (!tc.isConnected())
                {
                    start();
                    if (!tc.isConnected()) return new result(false, "connection lost");
                }

                tcp.request req = new tcp.request((short)cmd.REQ_LOGIN);
                req.encode(usr);
                req.encode(passwd);
                
                tcp.response rsp = send(req, timeout);
                if (rsp == null)
                {
                    return new result(false, "no response");
                }

                int result = rsp.nextInt();
                string errmsg = rsp.nextString();
                Console.WriteLine("cmd=[{0}], sn=[{1}], result=[{2}], errmsg=[{3}]", rsp.cmd, rsp.sn, result, errmsg);
                return new result(result==0, errmsg);
            }
Exemplo n.º 5
0
 private bool send(tcp.request req)
 {
     return req.send(tc);
 }