Photon Server API Documentation
v5.0RC1
This class is a base class for server connections. The RequestFiber processes all incoming messages. More...
Classes | |
| struct | EncryptionQueueFailureParams |
Public Member Functions | |
| void | Initialize (InitRequest initRequest) |
| override string | ToString () |
| void | Disconnect (int disconnectError=ErrorCodes.Ok) |
| Closes the connection. More... | |
| void | AbortConnection () |
| Forces the connection to close immediately. Should only be used if "Disconnect" does not lead to a clean connection shutdown, e.g. in case of an overloaded connection. More... | |
| void | Flush () |
| Flushes all pending data to the socket. More... | |
| byte[] | InitializeEncryption (byte[] otherPartyPublicKey) |
| Initializes the peer to receive and send encrypted operations with EncryptionMethod.Sha256Pkcs7. More... | |
| byte[] | InitializeEncryption (byte[] otherPartyPublicKey, EncryptionMethod mode) |
| Initializes the peer to receive and send encrypted operations. More... | |
| bool | SetupEncryption (EncryptionData encryptionData, byte channelCount, out short errorCode, out string errorMsg) |
| SendResult | SendEvent (IEventData eventData, SendParameters sendParameters) |
| Sends an IEventData object to the client. More... | |
| SendResult | SendMessage (object message, SendParameters sendParameters) |
| SendResult | SendOperationResponse (OperationResponse operationResponse, SendParameters sendParameters) |
| Sends the operation response to the client. More... | |
| SendResult | SendDisconnectMessage (DisconnectMessage message, SendParameters sendParameters, int disconnectDelay=DefaultDisconnectInterval) |
| void | GetStats (out int roundTripTime, out int roundTripTimeVariance, out int numFailures) |
| void | SetDebugString (string message) |
| string | GetDebugString () |
| virtual string | GetHistograms () |
| SendResult | SendEventAndDisconnect (IEventData eventData, SendParameters sendParameters, int disconnectDelay=DefaultDisconnectInterval, int disconnectCode=ErrorCodes.Ok) |
| SendResult | SendMessageAndDisconnect (object message, SendParameters sendParameters, int disconnectDelay=DefaultDisconnectInterval, int disconnectCode=ErrorCodes.Ok) |
| SendResult | SendOperationResponseAndDisconnect (OperationResponse operationResponse, SendParameters sendParameters, int disconnectDelay=DefaultDisconnectInterval) |
| Sends the operation response to the client. More... | |
| void | ScheduleDisconnect (int disconnectError, int delay) |
| Schedules disconnect for peer. After this call data will be neither accepted from nor sent to client one of use cases is next: send error info and schedule for disconnect. this will give a chance to error information to reach a client More... | |
| int | GetLastTouch () |
| void | SetPrivateCustomTypeCache (CustomTypeCache cache) |
| Sets private custom type cache. It is supposed to be used together with plugins. In other case Protocol.TryRegisterCustomType should be used More... | |
| void | SetInboundController (InboundController controller) |
| void | Dispose () |
| Disposes the peer. More... | |
| void | Trace (bool enabled, object tag) |
Public Attributes | |
| bool | Connected => this.ConnectionState == ConnectionState.Connected || this.connectionState == ConnectionState.ScheduledForDisconnect |
| Gets a value indicating whether this PeerBase instance is connected. More... | |
| int | ConnectionId => this.UnmanagedPeer.GetConnectionID() |
| Gets the connection id. More... | |
| bool | IsConnectionSecure => this.datagramEncryptionUsed || this.NetworkProtocol == NetworkProtocolType.SecureWebSocket |
| bool | Disposed => this.ConnectionState == ConnectionState.Disposed |
| Gets a value indicating whether the peer was disposed. More... | |
| bool | ScheduledForDisconnect => this.connectionState == ConnectionState.ScheduledForDisconnect |
| IPAddress | LocalIPAddress => string.IsNullOrEmpty(this.LocalIP) ? IPAddress.None : IPAddress.Parse(this.LocalIP) |
| Gets the IP Address the client connects to. More... | |
| IPAddress | RemoteIPAddress => string.IsNullOrEmpty(this.RemoteIP) ? IPAddress.None : IPAddress.Parse(this.RemoteIP) |
| Gets the client's remote IP address. More... | |
| IFiber | RequestFiber => this.requestFiber |
| Gets fiber for incoming messages. More... | |
| bool | LocalIPAddressIsIPv6 => this.LocalIPAddress.AddressFamily == AddressFamily.InterNetworkV6 |
| If true connection is using a server IPv6 endpoint. More... | |
| bool | IsIPv6ToIPv4Bridged => this.SourceUsingIPv6 && this.LocalIPAddress.AddressFamily != AddressFamily.InterNetworkV6 |
| If true the client is being bridged (DNS64+NAT64), also SourceUsingIPv6. More... | |
| ProtocolType | ProtocolType => this.protocol.ProtocolType |
Static Public Attributes | |
| const int | DefaultDisconnectInterval = 5_000 |
Protected Member Functions | |
| virtual SendResult | SendData (byte[] data, SendParameters sendParameters) |
| Sends bytes to the client. More... | |
| virtual void | OnReceive (byte[] data, SendParameters sendParameters) |
| Invoked if incoming data was received for the peer. More... | |
| void | OnMessageInternal (object message, SendParameters sendParameters) |
| void | OnOperationRequestInternal (OperationRequest operationRequest, SendParameters sendParameters) |
| virtual void | Dispose (bool disposing) |
| Disposes the internal fibers. More... | |
| abstract void | OnDisconnect (int reasonCode, string reasonDetail) |
| The connection was closed. More... | |
| virtual void | OnSendBufferEmpty () |
| The default behavior of OnSendBufferFull is to disconnect the client. If this behavior is changed (override) the inheritor can pause sending until OnSendBufferEmpty is called. More... | |
| virtual void | OnDeserializationError (byte[] data, RtsMessageType msgType, string debugMessage, short errorCode=ErrorCodes.UnexpectedData, byte opCode=0, Exception exception=null) |
| This method is called if incoming data has an unexpected format. Per default this method disconnects the client. Override to change this behavior. More... | |
| OperationRequest | ParseOperationRequest (byte[] data, SendParameters sendParameters) |
| OperationRequest | ParseInternalOperationRequest (byte[] data, SendParameters sendParameters) |
| object | ParseMessage (byte[] data, SendParameters sendParameters) |
| byte[] | ParseRawMessage (byte[] data, SendParameters sendParameters) |
| void | HandleParseError (byte[] data, SendParameters sendParameters, Exception exception, string errorMsg, short errorCode, RtsMessageType msgType, byte operationCode=0) |
| void | GetTraceStatus (out int traceOptions, out int enableOptions, out string tag) |
| void | DisconnectAfterSend (int disconnectCode, int disconnectDelay, SendResult result) |
| virtual void | OnEncryptionQueueOverload (EncryptionQueueFailureParams failureParams) |
Static Protected Member Functions | |
| static bool | NeedSendErrorLog (SendResult sendResult) |
Protected Attributes | |
| readonly object | SyncRoot = new object() |
| object for synchronization More... | |
| CustomTypeCache | privateCustomTypeCache |
| PeerMetaDataContext | metaDataContext |
Static Protected Attributes | |
| static readonly ILogger | sendErrorLog = LogManager.GetLogger("Photon.ErrorLog.PeerSendError") |
Properties | |
| ConnectionState | ConnectionState [get, set] |
| Gets the ConnectionState for this instance. More... | |
| string | LocalIP [get] |
| Gets the IP the client connects to. More... | |
| int | LocalPort [get] |
| Gets the port the client connects to. More... | |
| NetworkProtocolType | NetworkProtocol [get] |
| Gets the network protocol type used by the peer. More... | |
| IRpcProtocol | Protocol [get, set] |
| Gets the used IRpcProtocol protocol. More... | |
| string | RemoteIP [get] |
| Gets the client's remote IP address. More... | |
| int | RemotePort [get] |
| Gets the port the client connects from. More... | |
| int | RoundTripTime [get, protected set] |
| Gets the last round trip time for this peer. More... | |
| int | RoundTripTimeVariance [get, protected set] |
| Gets the last round trip time variance for this peer. More... | |
| int | NumFailures [get, protected set] |
| bool | SourceUsingIPv6 [get] |
| If true the peer is using IPv6 to connect to the server, if the server endpoint used is not IPv6 (LocalIPAddressIsIPv6) it means the client is being bridged (DNS64+NAT64), also IsIPv6ToIPv4Bridged. More... | |
| bool | ClientUsingDebugLib [get] |
| byte | SdkId [get] |
| byte | PlatformId [get] |
| Version | ClientVersion [get, protected set] |
| DateTime | CreationTime = DateTime.Now [get] |
| PeerType | PeerType [get] |
| Under laying native peer type More... | |
| InboundController | PrivateInboundController [get] |
| int | LastErrorCode [get] |
| last error code that we was sent/set though this peer More... | |
This class is a base class for server connections. The RequestFiber processes all incoming messages.
|
inline |
Forces the connection to close immediately. Should only be used if "Disconnect" does not lead to a clean connection shutdown, e.g. in case of an overloaded connection.
|
inline |
Closes the connection.
|
inlineprotected |
|
inline |
Disposes the peer.
|
inlineprotectedvirtual |
Disposes the internal fibers.
| disposing | True if called from Dispose(). |
Reimplemented in Photon.SocketServer.ServerToServer.S2SPeerBase, and Photon.SocketServer.ServerToServer.OutboundS2SPeer.
|
inline |
Flushes all pending data to the socket.
|
inline |
|
inlinevirtual |
|
inline |
|
inline |
|
inlineprotected |
|
inlineprotected |
|
inline |
|
inline |
Initializes the peer to receive and send encrypted operations with EncryptionMethod.Sha256Pkcs7.
| otherPartyPublicKey | The other party public key. |
|
inline |
Initializes the peer to receive and send encrypted operations.
| otherPartyPublicKey | The other party public key. |
| mode | Specifies the EncryptionMethod. |
DONOT_USE_NATIVE_CRYPTO_PLUGIN
|
inlinestaticprotected |
|
inlineprotectedvirtual |
This method is called if incoming data has an unexpected format. Per default this method disconnects the client. Override to change this behavior.
| data | The received data. |
| debugMessage | A debug message that specifies why the data was unexpected. |
| errorCode | |
| opCode | |
| exception | parsing exception |
Reimplemented in Photon.Hive.HivePeer.
|
protectedpure virtual |
The connection was closed.
Implemented in Photon.LoadBalancing.MasterServer.MasterClientPeer, Photon.Hive.HivePeer, Photon.LoadBalancing.MasterServer.GameServer.IncomingGameServerPeer, Photon.LoadBalancing.GameServer.GameClientPeer, Photon.LoadBalancing.GameServer.OutgoingMasterServerPeer, Photon.SocketServer.Rpc.Peer, and Photon.NameServer.ClientPeer.
|
inlineprotectedvirtual |
|
inlineprotected |
|
inlineprotected |
|
inlineprotectedvirtual |
Invoked if incoming data was received for the peer.
| data | An array of type Byte containing the received data. |
| sendParameters | A SendParameters instance specifying how the data was send. |
Can be overridden in a derived class to implement a custom request handling. The default implementation tries to parse the data as an OperationRequest and invokes the OnOperationRequest method of this instance.
Reimplemented in Photon.SocketServer.ServerToServer.S2SPeerBase.
|
inlineprotectedvirtual |
The default behavior of OnSendBufferFull is to disconnect the client. If this behavior is changed (override) the inheritor can pause sending until OnSendBufferEmpty is called.
Reimplemented in Photon.Hive.HivePeer.
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inline |
Schedules disconnect for peer. After this call data will be neither accepted from nor sent to client one of use cases is next: send error info and schedule for disconnect. this will give a chance to error information to reach a client
| disconnectError | error code that is reason for disconnect. OperationInvalid for instance |
| delay |
|
inlineprotectedvirtual |
Sends bytes to the client.
| data | The data. |
| sendParameters | The send Options. |
|
inline |
|
inline |
Sends an IEventData object to the client.
| eventData | The event data. |
| sendParameters | The send Options. |
|
inline |
|
inline |
|
inline |
|
inline |
Sends the operation response to the client.
| operationResponse | The operation response. |
| sendParameters | The send Options. |
|
inline |
Sends the operation response to the client.
| operationResponse | The operation response. |
| sendParameters | The send Options. |
| disconnectDelay |
|
inline |
|
inline |
|
inline |
Sets private custom type cache. It is supposed to be used together with plugins. In other case Protocol.TryRegisterCustomType should be used
| cache |
|
inline |
|
inline |
|
inline |
| bool Photon.SocketServer.PeerBase.Connected => this.ConnectionState == ConnectionState.Connected || this.connectionState == ConnectionState.ScheduledForDisconnect |
Gets a value indicating whether this PeerBase instance is connected.
true if connected; otherwise, false.
| int Photon.SocketServer.PeerBase.ConnectionId => this.UnmanagedPeer.GetConnectionID() |
Gets the connection id.
Peers connected to different ports may have similar connection ids.
|
static |
| bool Photon.SocketServer.PeerBase.Disposed => this.ConnectionState == ConnectionState.Disposed |
Gets a value indicating whether the peer was disposed.
The peer is automatically disposed after OnDisconnect.
| bool Photon.SocketServer.PeerBase.IsConnectionSecure => this.datagramEncryptionUsed || this.NetworkProtocol == NetworkProtocolType.SecureWebSocket |
| bool Photon.SocketServer.PeerBase.IsIPv6ToIPv4Bridged => this.SourceUsingIPv6 && this.LocalIPAddress.AddressFamily != AddressFamily.InterNetworkV6 |
If true the client is being bridged (DNS64+NAT64), also SourceUsingIPv6.
| IPAddress Photon.SocketServer.PeerBase.LocalIPAddress => string.IsNullOrEmpty(this.LocalIP) ? IPAddress.None : IPAddress.Parse(this.LocalIP) |
Gets the IP Address the client connects to.
| bool Photon.SocketServer.PeerBase.LocalIPAddressIsIPv6 => this.LocalIPAddress.AddressFamily == AddressFamily.InterNetworkV6 |
If true connection is using a server IPv6 endpoint.
|
protected |
|
protected |
| ProtocolType Photon.SocketServer.PeerBase.ProtocolType => this.protocol.ProtocolType |
| IPAddress Photon.SocketServer.PeerBase.RemoteIPAddress => string.IsNullOrEmpty(this.RemoteIP) ? IPAddress.None : IPAddress.Parse(this.RemoteIP) |
Gets the client's remote IP address.
| IFiber Photon.SocketServer.PeerBase.RequestFiber => this.requestFiber |
Gets fiber for incoming messages.
| bool Photon.SocketServer.PeerBase.ScheduledForDisconnect => this.connectionState == ConnectionState.ScheduledForDisconnect |
|
staticprotected |
|
protected |
object for synchronization
|
get |
|
getprotected set |
|
getset |
Gets the ConnectionState for this instance.
|
get |
|
get |
last error code that we was sent/set though this peer
|
get |
Gets the IP the client connects to.
|
get |
Gets the port the client connects to.
|
get |
Gets the network protocol type used by the peer.
The network protocol type.
|
getprotected set |
|
get |
Under laying native peer type
|
get |
|
get |
|
getset |
Gets the used IRpcProtocol protocol.
|
get |
Gets the client's remote IP address.
|
get |
Gets the port the client connects from.
|
getprotected set |
Gets the last round trip time for this peer.
This property is updated after each incoming request from the client. Only set for ENet / UDP peers, not for TCP peers.
|
getprotected set |
Gets the last round trip time variance for this peer.
This property is updated after each incoming request from the client. Only set for ENet / UDP peers, not for TCP peers.
|
get |
|
get |
If true the peer is using IPv6 to connect to the server, if the server endpoint used is not IPv6 (LocalIPAddressIsIPv6) it means the client is being bridged (DNS64+NAT64), also IsIPv6ToIPv4Bridged.