protected override string PostHandle(HttpListenerRequest request, HttpListenerResponse response)
        {
            var httpStreamWorker = HttpStreamWorker.CreateHttpStreamWorker(request.RemoteEndPoint.Address.ToString());
            Dictionary <string, string> urlParams = null;

            HttpListenerManager.Instance.GetUrlParams(request.Url.Query, out urlParams);
            if (urlParams != null)
            {
                if (urlParams.ContainsKey("fileName") && urlParams.ContainsKey("dataContinue"))
                {
                    return(httpStreamWorker.ReadInputStream(request.InputStream, urlParams["fileName"], urlParams["dataContinue"]));
                }
                else
                {
                    return(JsonWorker.MakeSampleReturnJson(null, new string[] { "error", "params incomplete!", "200" }).jstr);
                }
            }
            else
            {
                return(JsonWorker.MakeSampleReturnJson(null, new string[] { "error", "params incomplete!", "200" }).jstr);
            }
        }
コード例 #2
0
        protected override string PostHandle(HttpListenerRequest request, HttpListenerResponse response)
        {
            var     httpStreamWorker = HttpStreamWorker.CreateHttpStreamWorker(request.RemoteEndPoint.ToString());
            var     json_data        = httpStreamWorker.ReadInputStreamToString(request.InputStream, (int)request.ContentLength64);
            JObject jobj             = null;

            try
            {
                jobj = JObject.Parse(json_data);
            }
            catch (Exception ex)
            {
                Debuger.PrintStr(ex.Message, EPRINT_TYPE.ERROR);
                return(JsonWorker.MakeSampleJson(new string[] { "type", "result" }, new string[] { "error", "json string can not be parsed by JObject!" }).jstr);
            }
            var commit_type = (EHttpCommitMsgType)int.Parse(jobj["commit_type"].ToString());

            switch (commit_type)
            {
            case EHttpCommitMsgType.EFactorChange:
            {
                var c_phone_id = jobj["phone_id"].ToString();
                var c_lock_id  = jobj["lock_id"].ToString();
                if (SmartLockTcpHandlerManager.Instance.SmartLockMap.ContainsKey(c_lock_id))
                {
                }
                MySqlConnection conn   = null;
                string          sql_re = null;
                var             reader = SqlWorker.MySqlQuery("beach_smart_lock", "user_data", new string[] { "selected_factor", "phone_id" }, "lock_id", c_lock_id, out conn, out sql_re);
                reader.Read();
                var selected_factor = reader.GetString(0).Split('|');
                var phone_id        = reader.GetString(1).Split(',');
                reader.Close();
                conn.Close();
                reader = null;
                conn   = null;

                for (int i = 0; i < phone_id.Length; i++)
                {
                    if (phone_id[i] == c_phone_id)
                    {
                        selected_factor[i] = jobj["factors"].ToString();
                        SqlWorker.MySqlEdit("beach_smart_lock", "user_data", "lock_id", c_lock_id,
                                            new string[] { "selected_factor" }, new string[] { string.Join('|', selected_factor) });
                        var tmppair = SmartLockTcpHandlerManager.Instance.SmartLockMap[c_lock_id];

                        /*abort app threads. dotnet core does not support the Abort() function.Interrrut() will throw exception when the thread has been block by socket.receive()*/
                        tmppair.app.e.IsBackground = true;
                        tmppair.app.e.Interrupt();
                        tmppair.app.ConnectionMainThread.IsBackground = true;
                        tmppair.app.ConnectionMainThread.Interrupt();

                        SmartLockTcpHandlerManager.Instance.DisconnectTcpConnectionHandler(tmppair.app, "factor change,lock thread reset");



                        tmppair.sl.OnFactorChange();
                        break;
                    }
                }
            }
            break;
            }

            return("");
        }