Exemplo n.º 1
0
    static bool FullRequestRobCursors()
    {
        var      buffer   = new ReadOnlyBytes(s_plaintextTechEmpowerRequestBytes);
        var      parser   = new HttpParser();
        var      request  = new RequestStruct();
        Position consumed = default;
        Position examined;
        bool     success = true;

        foreach (var iteration in Benchmark.Iterations)
        {
            using (iteration.StartMeasurement())
            {
                for (int i = 0; i < Benchmark.InnerIterationCount; i++)
                {
                    success = success && parser.ParseRequest(ref request, buffer, out consumed, out examined);
                    success = success && parser.ParseRequest(ref request, buffer, out consumed, out examined);
                    success = success && parser.ParseRequest(ref request, buffer, out consumed, out examined);
                    success = success && parser.ParseRequest(ref request, buffer, out consumed, out examined);
                    success = success && parser.ParseRequest(ref request, buffer, out consumed, out examined);
                }
            }
        }

        return(success);
    }
Exemplo n.º 2
0
    static bool FullRequestRob()
    {
        var  buffer        = new ReadOnlyBytes(s_plaintextTechEmpowerRequestBytes);
        var  parser        = new HttpParser();
        var  request       = new RequestStruct();
        int  consumedBytes = 0;
        bool success       = true;

        foreach (var iteration in Benchmark.Iterations)
        {
            using (iteration.StartMeasurement()) {
                for (int i = 0; i < Benchmark.InnerIterationCount; i++)
                {
                    success = success && parser.ParseRequestLine(ref request, buffer, out consumedBytes);
                    success = success && parser.ParseHeaders(ref request, buffer.Slice(consumedBytes), out consumedBytes);
                    success = success && parser.ParseRequestLine(ref request, buffer, out consumedBytes);
                    success = success && parser.ParseHeaders(ref request, buffer.Slice(consumedBytes), out consumedBytes);
                    success = success && parser.ParseRequestLine(ref request, buffer, out consumedBytes);
                    success = success && parser.ParseHeaders(ref request, buffer.Slice(consumedBytes), out consumedBytes);
                    success = success && parser.ParseRequestLine(ref request, buffer, out consumedBytes);
                    success = success && parser.ParseHeaders(ref request, buffer.Slice(consumedBytes), out consumedBytes);
                    success = success && parser.ParseRequestLine(ref request, buffer, out consumedBytes);
                    success = success && parser.ParseHeaders(ref request, buffer.Slice(consumedBytes), out consumedBytes);
                }
            }
        }

        return(success);
    }
Exemplo n.º 3
0
        private void DealHttpRequest(RequestStruct dataStruct)
        {
            try
            {
                ResponseStruct resdata = new ResponseStruct();
                resdata.ResponseSocket = dataStruct.RequestSocket;
                resdata.HttpVersion    = dataStruct.HttpVersion;

                string callback     = dataStruct.RequestQuerystring("callback");
                string requstWeight = dataStruct.RequestQuerystring("value");

                string response = "";

                switch (dataStruct.RequestPath)
                {
                case "/GetWeight.self":

                    if (requstWeight == _currentWeight)
                    {
                        _isHold = true;
                        _comReceivedWaitHandle.Reset();
                        _comReceivedWaitHandle.WaitOne(60 * 1000);     //阻塞
                        _isHold = false;
                    }

                    response = callback + "(" + "\"" + _currentWeight + "\"" + ")";

                    this._httpServer.SendToBrowser(resdata, response);

                    break;

                // 应答
                case "/Hello.self":
                    response = callback + "(" + "\"OK\"" + ")";
                    this._httpServer.SendToBrowser(resdata, response);
                    break;

                // 默认返回404错误
                default:
                {
                    resdata.StatusCode = "404";
                    this._httpServer.SendToBrowser(resdata, "Not Found<br>" + dataStruct.RequestUrl);
                    break;
                }
                }

                dataStruct.Close(); //关闭连接
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
Exemplo n.º 4
0
        public async Task <T> GetValue <T>(RequestStruct request)
        {
            if (request.ExpectedReturnType != typeof(T))
            {
                throw new Exception("Wrong type");
            }

            var response = await SendRequest(request);

            if (request.ExpectedReturnType == typeof(string))
            {
                return((T)Convert.ChangeType(response.GetString(), typeof(T)));
            }

            return(response.GetNumeric <T>());
        }
Exemplo n.º 5
0
        void _EndRequest(IAsyncResult result)
        {
            RequestStruct obj = (RequestStruct)result.AsyncState;

            try
            {
                // must catch "NotFoundError" when 5xx occurs (likely is)
                HttpWebResponse  response      = obj.Request.EndGetResponse(result) as HttpWebResponse;
                DAVRequestResult requestResult = new DAVRequestResult(this, response, _relativeHost);
                obj.Callback(requestResult, obj.UserObject);
            }
            catch (WebException we)
            {
                LastException = we;
                obj.Callback(new DAVRequestResult(this, ((HttpWebResponse)we.Response).StatusCode, ((HttpWebResponse)we.Response).StatusDescription), obj.UserObject);
            }
        }
Exemplo n.º 6
0
        private void DealRequest(RequestStruct dataStruct)
        {
            try
            {
                ResponseStruct resdata = new ResponseStruct();
                resdata.ResponseSocket = dataStruct.RequestSocket;
                resdata.HttpVersion    = dataStruct.HttpVersion;

                string callback = dataStruct.RequestQuerystring("callback");
                string response = "";

                switch (dataStruct.RequestPath)
                {
                // 打印
                case "/Print.self":
                    string url = dataStruct.RequestQuerystring("url");
                    string message;
                    DownLoadAndPrint(HttpUtility.UrlDecode(url), out message);

                    response = callback + "(" + "\"" + message + "\"" + ")";

                    this._httpServer.SendToBrowser(resdata, response);
                    break;

                // 应答
                case "/Hello.self":
                    response = callback + "(" + "\"OK\"" + ")";
                    this._httpServer.SendToBrowser(resdata, response);
                    break;

                // 默认返回404错误
                default:
                {
                    resdata.StatusCode = "404";
                    this._httpServer.SendToBrowser(resdata, "Not Found<br>" + dataStruct.RequestUrl);
                    break;
                }
                }

                dataStruct.Close(); //关闭连接
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
Exemplo n.º 7
0
        public void SubscribeOrderTradeUpdates(string loginId, string deviceType)
        {
            _loginId    = loginId;
            _deviceType = deviceType;
            RequestStruct req = new RequestStruct();

            req.a = "subscribe";
            req.v = new List <string>
            {
                loginId,
                deviceType
            };
            req.m = "updates";
            var json = JsonConvert.SerializeObject(req);

            _webSocket.Send(json);
        }
Exemplo n.º 8
0
        void _EndRequestStream(IAsyncResult result)
        {
            RequestStruct  obj  = (RequestStruct)result.AsyncState;
            DAVRequestBody body = obj.Body;

            try
            {
                Stream stream = obj.Request.EndGetRequestStream(result);
                body.XmlBody.Seek(0, SeekOrigin.Begin);
                body.XmlBody.CopyTo(stream, 4096);
                stream.Close();

                obj.Request.BeginGetResponse(_EndRequest, obj);
            }
            catch (WebException we)
            {
                LastException = we;
                obj.Callback(new DAVRequestResult(this, ((HttpWebResponse)we.Response).StatusCode, ((HttpWebResponse)we.Response).StatusDescription), obj.UserObject);
            }
        }
Exemplo n.º 9
0
        /// <summary>
        /// Requests system time from all connected peers, collects responses after 5 seconds
        /// and computes the median
        /// </summary>
        /// <returns>Median diff of all responses</returns>
        public long SyncTime()
        {
            // process responses
            List<long> diffs = new List<long>();
            foreach (KeyValuePair<Hash, ResponseStruct> entry in collectedResponses)
                diffs.Add(entry.Value.diff);
            diffs.Add(0);
            collectedResponses = new ConcurrentDictionary<Hash, ResponseStruct>();

            long diff = computeDiff(diffs);
            double display = ((double)diff) / 10000000;
            DateTime st = DateTime.FromFileTimeUtc(nodeState.SystemTime);
            DateTime nt = DateTime.FromFileTimeUtc(nodeState.NetworkTime);

            Print(diffs.Count + " resp; diff " + display/*.ToString("0.000")*/ + "; \tst: " + st.ToLongTimeString() + "; \tnt: " + nt.ToLongTimeString());

            //send new requests
            //Print("start syncing with " + nodeState.ConnectedValidators.Count + " peers");
            sentRequests = new ConcurrentDictionary<Hash, RequestStruct>();
            foreach (Hash peer in nodeState.ConnectedValidators)
            {
                // save locally
                RequestStruct rs = new RequestStruct();
                rs.senderTime = nodeState.SystemTime;
                rs.token = TNetUtils.GenerateNewToken();
                sentRequests.AddOrUpdate(peer, rs, (ok, ov) => rs);

                // send message
                TimeSyncRqMsg request = new TimeSyncRqMsg();
                request.senderTime = nodeState.SystemTime;
                byte[] message = request.Serialize();
                NetworkPacket packet = new NetworkPacket(nodeConfig.PublicKey, PacketType.TPT_TIMESYNC_REQUEST, message, rs.token);
                networkPacketSwitch.AddToQueue(peer, packet);
            }

            return diff;
        }
Exemplo n.º 10
0
 private async Task <ModbusMessageStruct[]> SendRequest(RequestStruct message) => (await SendRequest(message.ToBytes(DeviceId, false))).HoldingRegisters;