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