//------------------------------------------------------------
// Game Framework
// Copyright © 2013-2021 Jiang Yin. All rights reserved.
// Homepage: https://gameframework.cn/
// Feedback: mailto:ellan@gameframework.cn
//------------------------------------------------------------
using System;
using System.Net;
using System.Net.Sockets;
namespace GameFramework.Network
{
///
/// 网络频道接口。
///
public interface INetworkChannel
{
///
/// 获取网络频道名称。
///
string Name
{
get;
}
///
/// 获取网络频道所使用的 Socket。
///
Socket Socket
{
get;
}
///
/// 获取是否已连接。
///
bool Connected
{
get;
}
///
/// 获取网络服务类型。
///
ServiceType ServiceType
{
get;
}
///
/// 获取网络地址类型。
///
AddressFamily AddressFamily
{
get;
}
///
/// 获取要发送的消息包数量。
///
int SendPacketCount
{
get;
}
///
/// 获取累计发送的消息包数量。
///
int SentPacketCount
{
get;
}
///
/// 获取已接收未处理的消息包数量。
///
int ReceivePacketCount
{
get;
}
///
/// 获取累计已接收的消息包数量。
///
int ReceivedPacketCount
{
get;
}
///
/// 获取或设置当收到消息包时是否重置心跳流逝时间。
///
bool ResetHeartBeatElapseSecondsWhenReceivePacket
{
get;
set;
}
///
/// 获取丢失心跳的次数。
///
int MissHeartBeatCount
{
get;
}
///
/// 获取或设置心跳间隔时长,以秒为单位。
///
float HeartBeatInterval
{
get;
set;
}
///
/// 获取心跳等待时长,以秒为单位。
///
float HeartBeatElapseSeconds
{
get;
}
///
/// 注册网络消息包处理函数。
///
/// 要注册的网络消息包处理函数。
void RegisterHandler(IPacketHandler handler);
///
/// 设置默认事件处理函数。
///
/// 要设置的默认事件处理函数。
void SetDefaultHandler(EventHandler handler);
///
/// 连接到远程主机。
///
/// 远程主机的 IP 地址。
/// 远程主机的端口号。
void Connect(IPAddress ipAddress, int port);
///
/// 连接到远程主机。
///
/// 远程主机的 IP 地址。
/// 远程主机的端口号。
/// 用户自定义数据。
void Connect(IPAddress ipAddress, int port, object userData);
///
/// 关闭网络频道。
///
void Close();
///
/// 向远程主机发送消息包。
///
/// 消息包类型。
/// 要发送的消息包。
void Send(T packet) where T : Packet;
}
}