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); }
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); }
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()); } }
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>()); }
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); } }
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()); } }
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); }
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); } }
/// <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; }
private async Task <ModbusMessageStruct[]> SendRequest(RequestStruct message) => (await SendRequest(message.ToBytes(DeviceId, false))).HoldingRegisters;