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; } }