using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Sockets;
using System.Threading.Tasks;
namespace Base
{
public enum NetworkProtocol
{
TCP,
UDP
}
public abstract class AService: IDisposable
{
///
/// 将函数调用加入IService线程
///
///
public abstract void Add(Action action);
public abstract AChannel GetChannel(long id);
public abstract AChannel GetChannel(string host, int port);
public abstract AChannel GetChannel(string address);
public abstract Task AcceptChannel();
public abstract void Remove(long channelId);
public abstract void Update();
public Action OnError;
protected void OnChannelError(long channelId, SocketError error)
{
this.OnError?.Invoke(channelId, error);
this.Remove(channelId);
}
public abstract void Dispose();
}
}