using System;
using System.Net;
using System.Threading.Tasks;
namespace GameCult.Networking
{
///
/// Transport-neutral schema-v0 peer surface for service bridges.
///
public interface ICultNetSchemaServerPeer
{
///
/// Sends a schema-v0 message to this peer.
///
void SendCultNet(TMessage message)
where TMessage : ICultNetSchemaMessage;
}
///
/// Transport-neutral schema-v0 server surface for service bridges.
///
public interface ICultNetSchemaServer
{
///
/// Registers a schema-v0 handler.
///
void OnCultNet(Func callback)
where TMessage : ICultNetSchemaMessage;
///
/// Removes a previously registered schema-v0 handler.
///
void RemoveCultNetMessageListener(Delegate callback)
where TMessage : ICultNetSchemaMessage;
}
/// Optional physical peer location used for locality-sensitive transport negotiation.
public interface ICultNetSchemaServerPeerLocation
{
/// Gets the remote physical endpoint when the transport exposes one.
EndPoint? RemoteEndPoint { get; }
}
///
/// Optional transport-neutral peer lifetime surface for stateful service bridges.
///
public interface ICultNetSchemaServerPeerLifecycle
{
///
/// Raised after a peer session is no longer able to receive service output.
///
event Action PeerDisconnected;
}
}