public void EnqueueRequest(byte[] data, ServerHost.ProcessClientResponseDelegateHandler callback) { var request = new Request() { RequestData = data, Callback = callback }; lock (requests_queue_lock) { requests_queue.Add(request); } var request_bytes = request.RequestIdentifier .ToByteArray() .Concat(data) .ToArray(); lock (requests_queue_lock) { tcp_client.GetStream().Write(request_bytes, 0, request_bytes.Length); } }
/// <summary> /// Hace una solicitud al cliente indicado y ejecuta el callback pasado como parámetro al ser respondida. /// </summary> /// <param name="request"></param> /// <param name="callback"></param> public static void RequestToClient(Guid client_id, byte[] request, ServerHost.ProcessClientResponseDelegateHandler callback) { ServerHost.Current.Hosts.TryGetValue(client_id, out HostClient client); client.EnqueueRequest(request, callback); }