/
IInputChannel.cs
36 lines (29 loc) · 1.37 KB
/
IInputChannel.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System.Threading.Tasks;
namespace System.ServiceModel.Channels
{
public interface IInputChannel : IChannel
{
EndpointAddress LocalAddress { get; }
Message Receive();
Message Receive(TimeSpan timeout);
IAsyncResult BeginReceive(AsyncCallback callback, object state);
IAsyncResult BeginReceive(TimeSpan timeout, AsyncCallback callback, object state);
Message EndReceive(IAsyncResult result);
bool TryReceive(TimeSpan timeout, out Message message);
IAsyncResult BeginTryReceive(TimeSpan timeout, AsyncCallback callback, object state);
bool EndTryReceive(IAsyncResult result, out Message message);
bool WaitForMessage(TimeSpan timeout);
IAsyncResult BeginWaitForMessage(TimeSpan timeout, AsyncCallback callback, object state);
bool EndWaitForMessage(IAsyncResult result);
}
public interface IAsyncInputChannel : IInputChannel, IAsyncCommunicationObject
{
Task<Message> ReceiveAsync();
Task<Message> ReceiveAsync(TimeSpan timeout);
Task<(bool, Message)> TryReceiveAsync(TimeSpan timeout);
Task<bool> WaitForMessageAsync(TimeSpan timeout);
}
}