51 lines
1.8 KiB
C#
51 lines
1.8 KiB
C#
|
using System;
|
|||
|
using System.Threading.Tasks;
|
|||
|
|
|||
|
namespace Plane.Communication
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// 定义与远程主机通信的方法。
|
|||
|
/// </summary>
|
|||
|
public interface IConnection
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// 在不宜抛出的异常发生时引发的事件。
|
|||
|
/// </summary>
|
|||
|
event EventHandler<ExceptionThrownEventArgs> ExceptionThrown;
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 获取一个值,指示通信是否已开启。
|
|||
|
/// </summary>
|
|||
|
bool IsOpen { get; }
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 关闭通信。
|
|||
|
/// </summary>
|
|||
|
void Close();
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 开启通信。
|
|||
|
/// </summary>
|
|||
|
/// <returns>表示此异步操作的 <see cref="Task"/> 实例。</returns>
|
|||
|
Task OpenAsync();
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 异步读取数据。顺利完成时将正好读取 <paramref name="count"/> 个字节。
|
|||
|
/// </summary>
|
|||
|
/// <param name="buffer">存放数据的缓冲区。</param>
|
|||
|
/// <param name="offset">起始下标。</param>
|
|||
|
/// <param name="count">要读取的字节数。</param>
|
|||
|
/// <returns>包含成功读取的字节数的 <see cref="Task{TResult}"/> 实例。此数目在操作顺利完成时保证与 <paramref name="count"/> 等,否则为 0。</returns>
|
|||
|
Task<int> ReadAsync(byte[] buffer, int offset, int count);
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// 异步写入数据。会抛异常。
|
|||
|
/// </summary>
|
|||
|
/// <param name="buffer">存放数据的缓冲区。</param>
|
|||
|
/// <param name="offset">起始下标。</param>
|
|||
|
/// <param name="count">要写入的字节数。</param>
|
|||
|
/// <returns>表示此异步操作的 <see cref="Task"/> 实例。</returns>
|
|||
|
Task WriteAsync(byte[] buffer, int offset, int count);
|
|||
|
}
|
|||
|
}
|