diff options
author | chai <chaifix@163.com> | 2021-12-24 09:40:18 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2021-12-24 09:40:18 +0800 |
commit | 188ee370a4a27de0bc44b9a83c595102187571e3 (patch) | |
tree | d9cdf6ed1d8578b6c23b3eb047c75aa639254494 /Mage/Assets/ThirdParty/Photon/PhotonRealtime/Code/WebRpc.cs |
+init
Diffstat (limited to 'Mage/Assets/ThirdParty/Photon/PhotonRealtime/Code/WebRpc.cs')
-rw-r--r-- | Mage/Assets/ThirdParty/Photon/PhotonRealtime/Code/WebRpc.cs | 187 |
1 files changed, 187 insertions, 0 deletions
diff --git a/Mage/Assets/ThirdParty/Photon/PhotonRealtime/Code/WebRpc.cs b/Mage/Assets/ThirdParty/Photon/PhotonRealtime/Code/WebRpc.cs new file mode 100644 index 0000000..b0177e3 --- /dev/null +++ b/Mage/Assets/ThirdParty/Photon/PhotonRealtime/Code/WebRpc.cs @@ -0,0 +1,187 @@ +// ---------------------------------------------------------------------------- +// <copyright file="WebRpc.cs" company="Exit Games GmbH"> +// Loadbalancing Framework for Photon - Copyright (C) 2018 Exit Games GmbH +// </copyright> +// <summary> +// This class wraps responses of a Photon WebRPC call, coming from a +// third party web service. +// </summary> +// <author>developer@photonengine.com</author> +// ---------------------------------------------------------------------------- + +#if UNITY_4_7 || UNITY_5 || UNITY_5_3_OR_NEWER +#define SUPPORTED_UNITY +#endif + + +namespace Photon.Realtime +{ + using System.Collections.Generic; + using ExitGames.Client.Photon; + + #if SUPPORTED_UNITY || NETFX_CORE + using Hashtable = ExitGames.Client.Photon.Hashtable; + using SupportClass = ExitGames.Client.Photon.SupportClass; + #endif + + + /// <summary>Reads an operation response of a WebRpc and provides convenient access to most common values.</summary> + /// <remarks> + /// See LoadBalancingClient.OpWebRpc.<br/> + /// Create a WebRpcResponse to access common result values.<br/> + /// The operationResponse.OperationCode should be: OperationCode.WebRpc.<br/> + /// </remarks> + public class WebRpcResponse + { + /// <summary>Name of the WebRpc that was called.</summary> + public string Name { get; private set; } + + /// <summary>ResultCode of the WebService that answered the WebRpc.</summary> + /// <remarks> + /// 0 is: "OK" for WebRPCs.<br/> + /// -1 is: No ResultCode by WebRpc service (check <see cref="OperationResponse.ReturnCode"/>).<br/> + /// Other ResultCode are defined by the individual WebRpc and service. + /// </remarks> + public int ResultCode { get; private set; } + [System.Obsolete("Use ResultCode instead")] + public int ReturnCode + { + get { return ResultCode; } + } + + /// <summary>Might be empty or null.</summary> + public string Message { get; private set; } + [System.Obsolete("Use Message instead")] + public string DebugMessage + { + get { return Message; } + } + + + /// <summary>Other key/values returned by the webservice that answered the WebRpc.</summary> + public Dictionary<string, object> Parameters { get; private set; } + + /// <summary>An OperationResponse for a WebRpc is needed to read it's values.</summary> + public WebRpcResponse(OperationResponse response) + { + object value; + if (response.Parameters.TryGetValue(ParameterCode.UriPath, out value)) + { + this.Name = value as string; + } + + this.ResultCode = -1; + if (response.Parameters.TryGetValue(ParameterCode.WebRpcReturnCode, out value)) + { + this.ResultCode = (byte)value; + } + + if (response.Parameters.TryGetValue(ParameterCode.WebRpcParameters, out value)) + { + this.Parameters = value as Dictionary<string, object>; + } + + if (response.Parameters.TryGetValue(ParameterCode.WebRpcReturnMessage, out value)) + { + this.Message = value as string; + } + } + + /// <summary>Turns the response into an easier to read string.</summary> + /// <returns>String resembling the result.</returns> + public string ToStringFull() + { + return string.Format("{0}={2}: {1} \"{3}\"", this.Name, SupportClass.DictionaryToString(this.Parameters), this.ResultCode, this.Message); + } + } + + + /// <summary> + /// Optional flags to be used in Photon client SDKs with Op RaiseEvent and Op SetProperties. + /// Introduced mainly for webhooks 1.2 to control behavior of forwarded HTTP requests. + /// </summary> + public class WebFlags + { + + public readonly static WebFlags Default = new WebFlags(0); + public byte WebhookFlags; + /// <summary> + /// Indicates whether to forward HTTP request to web service or not. + /// </summary> + public bool HttpForward + { + get { return (WebhookFlags & HttpForwardConst) != 0; } + set { + if (value) + { + WebhookFlags |= HttpForwardConst; + } + else + { + WebhookFlags = (byte) (WebhookFlags & ~(1 << 0)); + } + } + } + public const byte HttpForwardConst = 0x01; + /// <summary> + /// Indicates whether to send AuthCookie of actor in the HTTP request to web service or not. + /// </summary> + public bool SendAuthCookie + { + get { return (WebhookFlags & SendAuthCookieConst) != 0; } + set { + if (value) + { + WebhookFlags |= SendAuthCookieConst; + } + else + { + WebhookFlags = (byte)(WebhookFlags & ~(1 << 1)); + } + } + } + public const byte SendAuthCookieConst = 0x02; + /// <summary> + /// Indicates whether to send HTTP request synchronously or asynchronously to web service. + /// </summary> + public bool SendSync + { + get { return (WebhookFlags & SendSyncConst) != 0; } + set { + if (value) + { + WebhookFlags |= SendSyncConst; + } + else + { + WebhookFlags = (byte)(WebhookFlags & ~(1 << 2)); + } + } + } + public const byte SendSyncConst = 0x04; + /// <summary> + /// Indicates whether to send serialized game state in HTTP request to web service or not. + /// </summary> + public bool SendState + { + get { return (WebhookFlags & SendStateConst) != 0; } + set { + if (value) + { + WebhookFlags |= SendStateConst; + } + else + { + WebhookFlags = (byte)(WebhookFlags & ~(1 << 3)); + } + } + } + public const byte SendStateConst = 0x08; + + public WebFlags(byte webhookFlags) + { + WebhookFlags = webhookFlags; + } + } + +} |