public void SendStart() { lock (lockObject) { // 전송이 아직 완료된 상태가 아니므로 데이터만 가져오고 큐에서 제거하진 않는다. IRequestItem packet = sendQueue.Peek(); //총 크기 byte[] headerBuffer = packet.RequestPacketHearder; byte[] buffer = new byte[headerBuffer.Length + packet.PacketBuffer.Length]; // 이번에 보낼 패킷 사이즈 만큼 버퍼 크기를 설정하고 SendArgs.SetBuffer(SendArgs.Offset, buffer.Length); //Copy Buffer.BlockCopy(headerBuffer, 0, buffer, 0, headerBuffer.Length); Buffer.BlockCopy(packet.PacketBuffer, 0, buffer, headerBuffer.Length, packet.PacketBuffer.Length); // 패킷 내용을 SocketAsyncEventArgs버퍼에 복사한다. Buffer.BlockCopy(buffer, 0, SendArgs.Buffer, SendArgs.Offset, buffer.Length); // 비동기 전송 시작. bool pending = Socket.SendAsync(SendArgs); if (!pending) { SendProcess(SendArgs); } } }
public void Send(IRequestItem requestItem) { if (token == null) { throw new NullReferenceException(); } this.token.Send(requestItem); }
public async Task <string> PostItemAsync(IRequestItem item) { HttpContent content = new StringContent(JsonConvert.SerializeObject(item), Encoding.UTF8, "application/json"); HttpResponseMessage message = await client.PostAsync(GetUri() + item.GetTableName(), content); string primaryKey = null; if (message.IsSuccessStatusCode) { string data = await message.Content.ReadAsStringAsync(); primaryKey = JsonConvert.DeserializeObject <string>(data); } return(primaryKey); }
public void Send(IRequestItem packet) { lock (lockObject) { if (sendQueue.Count <= 0) { sendQueue.Enqueue(packet); SendStart(); return; } // 큐에 무언가가 들어 있다면 아직 이전 전송이 완료되지 않은 상태이므로 큐에 추가만 하고 리턴한다. // 현재 수행중인 SendAsync가 완료된 이후에 큐를 검사하여 데이터가 있으면 SendAsync를 호출하여 전송해줄 것이다. sendQueue.Enqueue(packet); } }
private void Download(WebResponse res, Exception error, IRequestItem item) { if (error == null) { var html = Http.ReadResponse(res); var url = _parser.ParseUrl(html); if (url != null) { var content = Http.GetData(url); _disk.Write("", content); } } else { Console.WriteLine(error.Message); } }
public async Task <string> PostItemAsync(IRequestItem item, string route) { HttpContent content = new StringContent(JsonConvert.SerializeObject(item), Encoding.UTF8, "application/json"); HttpResponseMessage message = await client.PostAsync(GetUri() + item.GetTableName() + "/" + route, content); string primaryKey = null; if (!message.IsSuccessStatusCode) { HttpStatusCode statusCode = message.StatusCode; throw new BadHttpStatusCodeException($"Bad status code: {statusCode}", message); } string data = await message.Content.ReadAsStringAsync(); primaryKey = JsonConvert.DeserializeObject <string>(data); return(primaryKey); }
public bool Request <RequestPacket, ResponsePacket>(RequestPacket requestPacket, ResponseCallback <RequestPacket, ResponsePacket> responseCallback) where RequestPacket : IServerPacket where ResponsePacket : class, IClientPacket, new() { IRequestItem requestItem = requester.Request <RequestPacket>(requestPacket); server.Send(requestItem); RequestHolder requestHolder = new RequestHolder(); requestHolder.Add <RequestPacket, ResponsePacket>(requestPacket, responseCallback); concurrentQueue.Enqueue(requestHolder); //responseCallback(); //responseCallback(requestPacket, new ResponsePacket()); return(true); }
/// <summary> /// 下一个请求 /// </summary> private void NextRequest() { IRequestItem item = null; lock (_obj) { if (_next < _items.Length) { item = _items[_next++]; } } if (item != null) { Exception error = null; try { var request = CreateRequest(item); request.BeginGetResponse(Response, new object[] { request, item }); } catch (Exception e) { error = e; } //错误回掉 if (error != null) { _callback(null, error, item); //开始下一项请求 NextRequest(); } } //请求完成计数 else if (++_completedCount == _parallel) { if (RequestCompleted != null) { RequestCompleted(); } } }
public async void PutItemAsync(IRequestItem item) { HttpContent content = new StringContent(JsonConvert.SerializeObject(item), Encoding.UTF8, "application/json"); HttpResponseMessage message = await client.PostAsync(GetUri() + item.GetTableName() + "/" + "{item.Id}", content); }
public POWithStatus(IRequestItem requestItem) : base(new PO(requestItem)) { LocationStatus = GetStatusString(); }
public PO(IRequestItem requestItem) : this(requestItem.Value) { _requestItem = requestItem; }
public RequestItemDecorator(IRequestItem requestItem) { _requestItem = requestItem; }
public VendorItem(IRequestItem requestItem) : base(requestItem) { }
public DCItem(IRequestItem requestItem) : base(requestItem) { _reserves = new HashSet <DCLocation>(); GetDMSInfo(Value); }
public DCPO(IRequestItem requestItem) : base(requestItem) { _po = new POWithStatus(requestItem.Value); }
public static string GetIcon(IRequestItem requestItem) { return(SourceTypeHelper.GetIcon(requestItem.Request.Project.Source)); }
public static string GetMonochromeIcon(IRequestItem requestItem) { ISource source = requestItem.Request.Project.Source; return(SourceTypeHelper.GetMonochromeIcon(source)); }
/// <summary> /// 创建请求 /// </summary> /// <param name="item"></param> /// <returns></returns> protected virtual WebRequest CreateRequest(IRequestItem item) { return(WebRequest.Create(item.Uri)); }
public DMSItem(IRequestItem requestItem) : base(requestItem) { GetOH(base.Value); }
public HoldPO(IRequestItem reqeustItem) :base(new PO(reqeustItem)) { Initialize(); }