public virtual async Task <M> AskAsync(M message, IMessageFactory <M> factory, TimeSpan?timeout = null, System.Threading.CancellationToken?cancellationToken = null) { var bytesMessageTask = cancellationToken.HasValue ? Actor.Ask <BytesMessage>(new BytesMessage(message.Bytes), timeout, cancellationToken.Value) : Actor.Ask <BytesMessage>(new BytesMessage(message.Bytes), timeout); return(await bytesMessageTask.ContinueWith <M>(task => factory.FromBytes(task.Result.Bytes))); }
/// <summary> /// Reconstructs message data into <see cref="IIncommingMessage" /> /// </summary> /// <param name="buffer"></param> /// <param name="peer"></param> /// <returns></returns> public static IIncommingMessage FromBytes(byte[] buffer, int start, NetPeer peer) { return(_factory.FromBytes(buffer, start, peer)); }