From 0b5e246e8065b349c3e6a9e543e45292c598c7a1 Mon Sep 17 00:00:00 2001 From: Ahmed Schrute Date: Thu, 9 Dec 2021 13:12:33 -0800 Subject: [PATCH 01/26] Update Enums, Updated C# Binary --- .../Plugins/MatchingEngineSDKRestLibrary.dll | Bin 102912 -> 108032 bytes Runtime/Scripts/ExampleNonCellular.cs | 2 +- Runtime/Scripts/ExampleRest.cs | 2 +- Runtime/Scripts/ExampleUDP.cs | 2 +- Runtime/Scripts/ExampleWebSocket.cs | 2 +- Runtime/Scripts/MobiledgeXIntegration.cs | 4 ++-- .../Scripts/MobiledgeXIntegrationHelper.cs | 6 +++--- 7 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Runtime/Plugins/MatchingEngineSDKRestLibrary.dll b/Runtime/Plugins/MatchingEngineSDKRestLibrary.dll index 4ce3a3b439363f6f2a2fd199be8d7e9fdf073ab6..dbf5e34c8fb381ac39f5052ab0aa99e41795077b 100644 GIT binary patch literal 108032 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 Q^1+jP=JY><|DXo`1_(rl5C8xG literal 102912 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 Wqz8@|stSUlh>8Bs-~a!5;C}<%5_E|G diff --git a/Runtime/Scripts/ExampleNonCellular.cs b/Runtime/Scripts/ExampleNonCellular.cs index 4c56ec7b..00d5befb 100644 --- a/Runtime/Scripts/ExampleNonCellular.cs +++ b/Runtime/Scripts/ExampleNonCellular.cs @@ -46,7 +46,7 @@ async void Start() Debug.Log("FindCloudletException: " + fce.Message + "Inner Exception: " + fce.InnerException); // your fallback logic here } - mxi.GetAppPort(LProto.L_PROTO_TCP); // or LProto.L_PROTO_UDP + mxi.GetAppPort(LProto.Tcp); // or LProto.L_PROTO_UDP string url = mxi.GetUrl("http"); // or another L7 proto such as https, ws, wss, udp Debug.Log("url : " + url); // Once you have your edge server url you can start communicating with your Edge server diff --git a/Runtime/Scripts/ExampleRest.cs b/Runtime/Scripts/ExampleRest.cs index 78a8f5d9..7fcd41a4 100644 --- a/Runtime/Scripts/ExampleRest.cs +++ b/Runtime/Scripts/ExampleRest.cs @@ -65,7 +65,7 @@ async void GetEdgeConnection() mxi.SetFallbackLocation(-122.4194, 37.7749); //Example only (SF location),In Production you can optionally use: MobiledgeXIntegration.LocationFromIPAddress location = await MobiledgeXIntegration.GetLocationFromIP(); await mxi.RegisterAndFindCloudlet(); } - mxi.GetAppPort(LProto.L_PROTO_TCP); // or LProto.L_PROTO_UDP + mxi.GetAppPort(LProto.Tcp); // or LProto.L_PROTO_UDP string url = mxi.GetUrl("http"); // or another L7 proto such as https, ws, wss, udp Debug.Log("url : " + url); // Once you have your edge server url you can start communicating with your Edge server deployed on MobiledgeX Console diff --git a/Runtime/Scripts/ExampleUDP.cs b/Runtime/Scripts/ExampleUDP.cs index 32a6b61c..b6d8ca3f 100644 --- a/Runtime/Scripts/ExampleUDP.cs +++ b/Runtime/Scripts/ExampleUDP.cs @@ -22,7 +22,7 @@ async void GetEdgeConnection() { mxi = new MobiledgeXIntegration(); await mxi.RegisterAndFindCloudlet(); - udpSendPort = mxi.GetAppPort(LProto.L_PROTO_UDP).public_port; + udpSendPort = mxi.GetAppPort(LProto.Udp).public_port; udpHost = mxi.GetHost(); Debug.Log("UDP HOST : " + udpHost); Debug.Log("UDP PORT : " + udpSendPort); diff --git a/Runtime/Scripts/ExampleWebSocket.cs b/Runtime/Scripts/ExampleWebSocket.cs index f8d67d0c..367b0351 100644 --- a/Runtime/Scripts/ExampleWebSocket.cs +++ b/Runtime/Scripts/ExampleWebSocket.cs @@ -33,7 +33,7 @@ async void GetEdgeConnection() await mxi.RegisterAndFindCloudlet(); } - mxi.GetAppPort(LProto.L_PROTO_TCP); + mxi.GetAppPort(LProto.Tcp); string url = mxi.GetUrl("ws"); Debug.Log("WebSocket URL is : " + url); await StartWebSocket(url); diff --git a/Runtime/Scripts/MobiledgeXIntegration.cs b/Runtime/Scripts/MobiledgeXIntegration.cs index 1581df34..3a1c5f67 100644 --- a/Runtime/Scripts/MobiledgeXIntegration.cs +++ b/Runtime/Scripts/MobiledgeXIntegration.cs @@ -253,10 +253,10 @@ public AppPort GetAppPort(LProto proto, int port = 0) switch (proto) { - case LProto.L_PROTO_TCP: + case LProto.Tcp: appPortsDict = matchingEngine.GetTCPAppPorts(latestFindCloudletReply); break; - case LProto.L_PROTO_UDP: + case LProto.Udp: appPortsDict = matchingEngine.GetUDPAppPorts(latestFindCloudletReply); break; default: diff --git a/Runtime/Scripts/MobiledgeXIntegrationHelper.cs b/Runtime/Scripts/MobiledgeXIntegrationHelper.cs index 91f6d41e..603c79d2 100644 --- a/Runtime/Scripts/MobiledgeXIntegrationHelper.cs +++ b/Runtime/Scripts/MobiledgeXIntegrationHelper.cs @@ -139,7 +139,7 @@ public async Task Register(string dmeHost = null, uint dmePort = 0) Debug.LogError("MobiledgeX: Register reply NULL!"); throw new RegisterClientException("RegisterClient returned null."); } - if (reply.status != ReplyStatus.RS_SUCCESS) + if (reply.status != ReplyStatus.Success) { Debug.LogError("MobiledgeX: Register Failed: " + reply.status); throw new RegisterClientException("Bad RegisterClient. RegisterClient status is " + reply.status); @@ -226,7 +226,7 @@ public async Task FindCloudlet(string dmeHost = null, uint dmePort = 0) { throw new FindCloudletException("FindCloudletReply returned null. Make Sure you created App Instances for your Application and they are deployed in the correct region."); } - if (reply.status != FindCloudletReply.FindStatus.FIND_FOUND) + if (reply.status != FindCloudletReply.FindStatus.Found) { throw new FindCloudletException("Unable to findCloudlet. Status is " + reply.status); } @@ -235,7 +235,7 @@ public async Task FindCloudlet(string dmeHost = null, uint dmePort = 0) Logger.Log("FindCloudlet with DME result: " + reply.status); latestFindCloudletReply = reply; latestAppPortList = reply.ports; - return reply.status == FindCloudletReply.FindStatus.FIND_FOUND; + return reply.status == FindCloudletReply.FindStatus.Found; } /// From 2476a6e80abe3fa83a52066eabe4a2f36d58dd41 Mon Sep 17 00:00:00 2001 From: Ahmed Schrute Date: Tue, 18 Jan 2022 10:26:07 -0800 Subject: [PATCH 02/26] EDGECLOUD-4791 Fix for IP To GeoLocation occasionally returns 0,0 --- Runtime/Scripts/MobiledgeXIntegrationConfig.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Runtime/Scripts/MobiledgeXIntegrationConfig.cs b/Runtime/Scripts/MobiledgeXIntegrationConfig.cs index efd2cb89..5820ef35 100644 --- a/Runtime/Scripts/MobiledgeXIntegrationConfig.cs +++ b/Runtime/Scripts/MobiledgeXIntegrationConfig.cs @@ -88,6 +88,10 @@ public static async Task GetLocationFromIP() HttpResponseMessage response = await httpClient.GetAsync("https://freegeoip.app/json/").ConfigureAwait(false); string responseBodyStr = response.Content.ReadAsStringAsync().Result; LocationFromIPAddress location = Messaging.Deserialize(responseBodyStr); + if (location.latitude == 0 && location.longitude == 0) + { + throw new Exception("Location API returned {0,0}, overriding location"); + } return location; } catch (Exception) From 5d44550e708acac2ccedc8526431c2c3911f5311 Mon Sep 17 00:00:00 2001 From: Ahmed Schrute Date: Tue, 18 Jan 2022 10:37:07 -0800 Subject: [PATCH 03/26] Specify the returned location --- Runtime/Scripts/MobiledgeXIntegrationConfig.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Runtime/Scripts/MobiledgeXIntegrationConfig.cs b/Runtime/Scripts/MobiledgeXIntegrationConfig.cs index 5820ef35..f146e30f 100644 --- a/Runtime/Scripts/MobiledgeXIntegrationConfig.cs +++ b/Runtime/Scripts/MobiledgeXIntegrationConfig.cs @@ -90,7 +90,7 @@ public static async Task GetLocationFromIP() LocationFromIPAddress location = Messaging.Deserialize(responseBodyStr); if (location.latitude == 0 && location.longitude == 0) { - throw new Exception("Location API returned {0,0}, overriding location"); + throw new Exception("Location API returned {0,0}, Overriding Location to (37.3382, 121.8863)"); } return location; } From 53bb911b71ffc907b162e3498862c349fe6f8a67 Mon Sep 17 00:00:00 2001 From: Ahmed Schrute Date: Tue, 18 Jan 2022 16:01:11 -0800 Subject: [PATCH 04/26] EDGECLOUD-4351 Create a SDK Template Script for Unity --- Editor/TemplateGenerator.cs | 58 ++++++++++++++++++++++++++++++++ Editor/TemplateGenerator.cs.meta | 11 ++++++ 2 files changed, 69 insertions(+) create mode 100644 Editor/TemplateGenerator.cs create mode 100644 Editor/TemplateGenerator.cs.meta diff --git a/Editor/TemplateGenerator.cs b/Editor/TemplateGenerator.cs new file mode 100644 index 00000000..33086dc1 --- /dev/null +++ b/Editor/TemplateGenerator.cs @@ -0,0 +1,58 @@ +/** + * Copyright 2018-2022 MobiledgeX, Inc. All rights and licenses reserved. + * MobiledgeX, Inc. 156 2nd Street #408, San Francisco, CA 94105 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if UNITY_EDITOR +using UnityEngine; +using UnityEditor; +using System.IO; + +namespace MobiledgeX +{ + public class TemplateGenerator : MonoBehaviour + { + [MenuItem("MobiledgeX/Create/GetUrlScript", false, 1)] + static void CreateGetUrlScript() + { + string pathUnityPackage = Application.dataPath+"/Runtime/Scripts/ExampleRest.cs";//used if sdk is imported using unity package + string pathGitUrl = "Packages/com.mobiledgex.sdk/Runtime/Scripts/ExampleRest.cs";//used if sdk is imported using git url + if (!File.Exists(pathGitUrl)) + { + Debug.LogError("Source file not found, Please file an issue to https://github.com/mobiledgex/edge-cloud-sdk-unity/issues/new?body=Reported%20on%20Unity" + Application.unityVersion); + return; + } + string[] lines = File.ReadAllLines(pathGitUrl); + lines[29] = "public class GetUrl : MonoBehaviour"; + string fileLocation = Application.dataPath + "/GetUrl.cs"; + if (File.Exists(fileLocation)) + { + Debug.LogError($"{fileLocation} already exists"); + return; + } + using (StreamWriter outfile = new StreamWriter(fileLocation)) + { + int counter = 0; + while (counter < lines.Length) + { + outfile.WriteLine(lines[counter]); + counter++; + } + } + AssetDatabase.Refresh(); + } + } +} +#endif \ No newline at end of file diff --git a/Editor/TemplateGenerator.cs.meta b/Editor/TemplateGenerator.cs.meta new file mode 100644 index 00000000..9ed43cbc --- /dev/null +++ b/Editor/TemplateGenerator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8257801ad26e54c60bbd71256b8647e2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: From 8e8b8622d397ead0d5b9d8dceac446527778ed5c Mon Sep 17 00:00:00 2001 From: Ahmed Schrute Date: Tue, 18 Jan 2022 16:03:23 -0800 Subject: [PATCH 05/26] Add line at EOF --- Editor/TemplateGenerator.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Editor/TemplateGenerator.cs b/Editor/TemplateGenerator.cs index 33086dc1..6689a17a 100644 --- a/Editor/TemplateGenerator.cs +++ b/Editor/TemplateGenerator.cs @@ -55,4 +55,4 @@ static void CreateGetUrlScript() } } } -#endif \ No newline at end of file +#endif From 4ae4c4e1c90f8d8c6fad51a1bdc5b4670e213f66 Mon Sep 17 00:00:00 2001 From: Ahmed Schrute Date: Wed, 26 Jan 2022 16:23:01 -0800 Subject: [PATCH 06/26] Use Abort only in Disposing websocket object --- Runtime/Scripts/MobiledgeXWebSocketClient.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/Runtime/Scripts/MobiledgeXWebSocketClient.cs b/Runtime/Scripts/MobiledgeXWebSocketClient.cs index 9d0bd0b0..cb33df25 100644 --- a/Runtime/Scripts/MobiledgeXWebSocketClient.cs +++ b/Runtime/Scripts/MobiledgeXWebSocketClient.cs @@ -241,7 +241,6 @@ public void Dispose() if (ws != null) { ws.Abort(); - ws.CloseAsync(WebSocketCloseStatus.NormalClosure, "Dispose", tokenSource.Token).ConfigureAwait(false).GetAwaiter().GetResult(); ws = null; } } From a3c2ce40103a0e4de49d3feff7f31ec8c2bc000a Mon Sep 17 00:00:00 2001 From: Ahmed Schrute Date: Wed, 9 Feb 2022 18:35:01 -0800 Subject: [PATCH 07/26] QoS Example and Meta file --- Runtime/Scripts/ExampleQoS.cs | 84 ++++++++++++++++++++++++++++++ Runtime/Scripts/ExampleQoS.cs.meta | 11 ++++ 2 files changed, 95 insertions(+) create mode 100644 Runtime/Scripts/ExampleQoS.cs create mode 100644 Runtime/Scripts/ExampleQoS.cs.meta diff --git a/Runtime/Scripts/ExampleQoS.cs b/Runtime/Scripts/ExampleQoS.cs new file mode 100644 index 00000000..7471e75f --- /dev/null +++ b/Runtime/Scripts/ExampleQoS.cs @@ -0,0 +1,84 @@ +/** + * Copyright 2018-2022 MobiledgeX, Inc. All rights and licenses reserved. + * MobiledgeX, Inc. 156 2nd Street #408, San Francisco, CA 94105 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +using System.Collections; +using UnityEngine; +using MobiledgeX; +using DistributedMatchEngine; +using System.Threading.Tasks; + +[RequireComponent(typeof(MobiledgeX.LocationService))] +public class ExampleQoS : MonoBehaviour +{ + MobiledgeXIntegration mxi; + + IEnumerator Start() + { + yield return StartCoroutine(MobiledgeX.LocationService.EnsureLocation()); + GetEdgeConnection(); + + } + + async void GetEdgeConnection() + { + mxi = new MobiledgeXIntegration(); + try + { + await mxi.RegisterAndFindCloudlet(); + } + catch (RegisterClientException rce) + { + Debug.Log("RegisterClientException: " + rce.Message + "Inner Exception: " + rce.InnerException); + mxi.UseWifiOnly(true); + await mxi.RegisterAndFindCloudlet(); + } + catch (FindCloudletException fce) + { + Debug.Log("FindCloudletException: " + fce.Message + "Inner Exception: " + fce.InnerException); + } + mxi.GetAppPort(LProto.Tcp); + string url = mxi.GetUrl("http"); + Debug.Log("url : " + url); + + + //Creates QoS Session + await CreateQoSSession(); + } + + private async Task CreateQoSSession() + { + QosPrioritySessionCreateRequest qoSRequest = mxi.matchingEngine.CreateQosPriorityCreateRequest(QosSessionProfile.LowLatency, mxi.FindCloudletReply, "5000", "3000"); + QosPrioritySessionCreateReply qoSReply = await mxi.matchingEngine.CreateQOSPrioritySession(qoSRequest); + Debug.Log(qoSReply.ToString()); + if (qoSReply.http_status == 200 || qoSReply.http_status == 201) return true; + else return false; + } + + private async Task DeleteQoSSession() + { + QosPrioritySessionDeleteRequest deleteRequest = mxi.matchingEngine.CreateQosPriorityDeleteRequest(QosSessionProfile.LowLatency); + QosPrioritySessionDeleteReply deleteReply = await mxi.matchingEngine.DeleteQOSPrioritySession(deleteRequest); + Debug.Log(deleteReply.ToString()); + if (deleteReply.status == DeleteStatus.Deleted) return true; + else return false; + } + + void OnDestroy() + { + mxi.Dispose(); + } +} diff --git a/Runtime/Scripts/ExampleQoS.cs.meta b/Runtime/Scripts/ExampleQoS.cs.meta new file mode 100644 index 00000000..7858ce0c --- /dev/null +++ b/Runtime/Scripts/ExampleQoS.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7df6ceeb555644f9b9f63290c220cf14 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: c1c309e3f8e5e4e48becefb11abf31d5, type: 3} + userData: + assetBundleName: + assetBundleVariant: From 33c0c0d055ef52614b7f6344036acbf40e69fa02 Mon Sep 17 00:00:00 2001 From: Ahmed Schrute Date: Fri, 11 Mar 2022 10:57:34 -0800 Subject: [PATCH 08/26] Remove MEL References --- Editor/MobiledgeXEditorWindow.cs | 4 +- Runtime/Plugins/Android.meta | 8 -- Runtime/Plugins/Android/mel.aar | Bin 16243 -> 0 bytes Runtime/Plugins/Android/mel.aar.meta | 32 ------ Runtime/Scripts/MelMessaging.cs | 128 ----------------------- Runtime/Scripts/MelMessaging.cs.meta | 11 -- Runtime/Scripts/MobiledgeXIntegration.cs | 13 +-- Runtime/Scripts/MobiledgeXSettings.cs | 4 +- 8 files changed, 3 insertions(+), 197 deletions(-) delete mode 100644 Runtime/Plugins/Android.meta delete mode 100644 Runtime/Plugins/Android/mel.aar delete mode 100644 Runtime/Plugins/Android/mel.aar.meta delete mode 100644 Runtime/Scripts/MelMessaging.cs delete mode 100644 Runtime/Scripts/MelMessaging.cs.meta diff --git a/Editor/MobiledgeXEditorWindow.cs b/Editor/MobiledgeXEditorWindow.cs index cc67d5da..4fab7464 100644 --- a/Editor/MobiledgeXEditorWindow.cs +++ b/Editor/MobiledgeXEditorWindow.cs @@ -1,5 +1,5 @@ /** - * Copyright 2018-2021 MobiledgeX, Inc. All rights and licenses reserved. + * Copyright 2018-2022 MobiledgeX, Inc. All rights and licenses reserved. * MobiledgeX, Inc. 156 2nd Street #408, San Francisco, CA 94105 * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -441,7 +441,6 @@ void AddMobiledgeXPlugins() string iosPluginPath = Path.GetFullPath("Packages/com.mobiledgex.sdk/Runtime/Plugins/iOS/PlatformIntegration.m"); string linkXMLPath = Path.GetFullPath("Packages/com.mobiledgex.sdk/link.xml"); string settingPath = Path.GetFullPath("Packages/com.mobiledgex.sdk/Resources/MobiledgeXSettings.asset"); - string melAARPath = Path.GetFullPath("Packages/com.mobiledgex.sdk/Runtime/Plugins/Android/mel.aar"); try { if (!Directory.Exists(@unityPluginsFolderPath)) @@ -468,7 +467,6 @@ void AddMobiledgeXPlugins() { AssetDatabase.CreateFolder("Assets/Plugins/MobiledgeX", "Android"); } - MoveFile(melAARPath, Path.Combine(@mobiledgeXFolderPath, @"Android/mel.aar"), true); AssetDatabase.Refresh(); } catch (Exception e) diff --git a/Runtime/Plugins/Android.meta b/Runtime/Plugins/Android.meta deleted file mode 100644 index 6afc8856..00000000 --- a/Runtime/Plugins/Android.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: b38684a80edc040678173b245ee173a2 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Runtime/Plugins/Android/mel.aar b/Runtime/Plugins/Android/mel.aar deleted file mode 100644 index 7f8ca334080e5edf1f426b6537197798485c1fb4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16243 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, "currentActivity"); - if (activity == null) - { - return null; - } - return activity; - } - - AndroidJavaClass getMel() - { - AndroidJavaClass MelCls = PlatformIntegrationUtil.GetAndroidJavaClass("com.mobiledgex.mel.MelMessaging"); - return MelCls; - } - - public MelMessaging(string appName) - { - // MobiledgeX Vender Interface. Only for Android. - AndroidJavaClass MelCls = getMel(); - - // Fire off intents to update MEL state. - var activity = getActivity(); - if (activity == null) - { - return; - } - MelCls.CallStatic("sendForMelStatus", activity, appName); - } - - public bool IsMelEnabled() - { - AndroidJavaClass MelCls = getMel(); - if (MelCls == null) - { - return false; - } - bool enabled = PlatformIntegrationUtil.CallStatic(MelCls, "isMelEnabled"); - return enabled; - } - - public string GetMelVersion() - { - AndroidJavaClass MelCls = getMel(); - if (MelCls == null) - { - return ""; - } - return PlatformIntegrationUtil.CallStatic(MelCls, "getMelVersion"); - } - - public string GetUid() - { - AndroidJavaClass MelCls = getMel(); - if (MelCls == null) - { - return ""; - } - string uid = PlatformIntegrationUtil.CallStatic(MelCls, "getUid"); - return uid; - } - - public string SetToken(string token, string app_name) - { - AndroidJavaClass MelCls = getMel(); - if (MelCls == null) - { - return ""; - } - object[] pa = new object[3] { getActivity(), token, app_name }; - string sent_token = PlatformIntegrationUtil.CallStatic(MelCls, "sendSetToken", pa); - return sent_token; - } - - // MelMessaging related: - public string GetManufacturer() - { - AndroidJavaClass BuildCls = PlatformIntegrationUtil.GetAndroidJavaClass("android.os.Build"); - string manufacturer = PlatformIntegrationUtil.GetStatic(BuildCls, "MANUFACTURER"); - return manufacturer; - } -#elif UNITY_IOS - public MelMessaging(string app_name) { } - public bool IsMelEnabled() { return false; } - public string GetMelVersion() { return ""; } - public string SetToken(string token, string app_name) { return ""; } - public string GetUid() { return ""; } - public string GetManufacturer() { return "Apple"; } -#else - public MelMessaging(string app_name) { } - public bool IsMelEnabled() { return false; } - public string GetMelVersion() { return ""; } - public string SetToken(string token, string app_name) { return ""; } - public string GetUid() { return ""; } - public string GetManufacturer() { return ""; } -#endif -} diff --git a/Runtime/Scripts/MelMessaging.cs.meta b/Runtime/Scripts/MelMessaging.cs.meta deleted file mode 100644 index 17f1d925..00000000 --- a/Runtime/Scripts/MelMessaging.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: a7340f008066f436c80eb93ec935e0f8 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Runtime/Scripts/MobiledgeXIntegration.cs b/Runtime/Scripts/MobiledgeXIntegration.cs index 3a1c5f67..f0eed803 100644 --- a/Runtime/Scripts/MobiledgeXIntegration.cs +++ b/Runtime/Scripts/MobiledgeXIntegration.cs @@ -1,5 +1,5 @@ /** -* Copyright 2018-2021 MobiledgeX, Inc. All rights and licenses reserved. +* Copyright 2018-2022 MobiledgeX, Inc. All rights and licenses reserved. * MobiledgeX, Inc. 156 2nd Street #408, San Francisco, CA 94105 * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -80,7 +80,6 @@ public partial class MobiledgeXIntegration : IDisposable AppPort latestAppPort = null; AppPort[] latestAppPortList = null; Location fallbackLocation = new Location(0, 0); - MelMessaging melMessaging; string region { @@ -121,11 +120,6 @@ public MobiledgeXIntegration(CarrierInfo carrierInfo = null, NetInterface netInt netInterface == null ? pIntegration.NetInterface : netInterface, uniqueId == null ? pIntegration.UniqueID : uniqueId, deviceInfo == null ? pIntegration.DeviceInfo : deviceInfo); - if (settings.MEL_ENABLED) - { - melMessaging = new MelMessaging(appName); - matchingEngine.SetMelMessaging(melMessaging); - } } /// @@ -142,11 +136,6 @@ public MobiledgeXIntegration(string orgName, string appName, string appVers, str pIntegration = new PlatformIntegration(); matchingEngine = new MatchingEngine(pIntegration.CarrierInfo, pIntegration.NetInterface, pIntegration.UniqueID, pIntegration.DeviceInfo); - if (settings.MEL_ENABLED) - { - melMessaging = new MelMessaging(appName); - matchingEngine.SetMelMessaging(melMessaging); - } } /// diff --git a/Runtime/Scripts/MobiledgeXSettings.cs b/Runtime/Scripts/MobiledgeXSettings.cs index 21cc1e86..dbc1ba99 100644 --- a/Runtime/Scripts/MobiledgeXSettings.cs +++ b/Runtime/Scripts/MobiledgeXSettings.cs @@ -1,5 +1,5 @@ /** - * Copyright 2018-2021 MobiledgeX, Inc. All rights and licenses reserved. + * Copyright 2018-2022 MobiledgeX, Inc. All rights and licenses reserved. * MobiledgeX, Inc. 156 2nd Street #408, San Francisco, CA 94105 * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -29,7 +29,5 @@ public class MobiledgeXSettings : ScriptableObject public string authPublicKey; public string region; public Logger.LogType logType = Logger.LogType.ErrorsAndWarnings; - [Tooltip("Set to true, If MEL mode is Enabled on your device.")] - public bool MEL_ENABLED; } } From 1e1492074f9902b107d07e8f37da7bd11d8a66b2 Mon Sep 17 00:00:00 2001 From: Ahmed Schrute Date: Sun, 13 Mar 2022 15:46:09 -0700 Subject: [PATCH 09/26] Update VerifyLocation Enums --- Runtime/Scripts/MobiledgeXIntegration.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Runtime/Scripts/MobiledgeXIntegration.cs b/Runtime/Scripts/MobiledgeXIntegration.cs index f0eed803..6d4620ed 100644 --- a/Runtime/Scripts/MobiledgeXIntegration.cs +++ b/Runtime/Scripts/MobiledgeXIntegration.cs @@ -194,17 +194,17 @@ public async Task VerifyLocation(string dmeHost = null, uint dmePort = 0) // GPS and Tower Status: switch (reply.gps_location_status) { - case VerifyLocationReply.GPSLocationStatus.LOC_ROAMING_COUNTRY_MISMATCH: - case VerifyLocationReply.GPSLocationStatus.LOC_ERROR_UNAUTHORIZED: - case VerifyLocationReply.GPSLocationStatus.LOC_ERROR_OTHER: - case VerifyLocationReply.GPSLocationStatus.LOC_UNKNOWN: + case VerifyLocationReply.GPSLocationStatus.RoamingCountryMismatch: + case VerifyLocationReply.GPSLocationStatus.ErrorUnauthorized: + case VerifyLocationReply.GPSLocationStatus.ErrorOther: + case VerifyLocationReply.GPSLocationStatus.Unknown: return false; } switch (reply.tower_status) { - case VerifyLocationReply.TowerStatus.NOT_CONNECTED_TO_SPECIFIED_TOWER: - case VerifyLocationReply.TowerStatus.TOWER_UNKNOWN: + case VerifyLocationReply.TowerStatus.NotConnectedToSpecifiedTower: + case VerifyLocationReply.TowerStatus.TowerUnknown: return false; } From c3797ba68aa3d4fe400b956287833558033f07e8 Mon Sep 17 00:00:00 2001 From: Ahmed Schrute Date: Sun, 13 Mar 2022 15:58:50 -0700 Subject: [PATCH 10/26] Fix broken Debug Binary --- .../Plugins/MatchingEngineSDKRestLibrary.dll | Bin 108032 -> 133632 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Runtime/Plugins/MatchingEngineSDKRestLibrary.dll b/Runtime/Plugins/MatchingEngineSDKRestLibrary.dll index dbf5e34c8fb381ac39f5052ab0aa99e41795077b..c8dc5b955598744973b5e65670b377ef59343ef2 100644 GIT binary patch literal 133632 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�uR01O0*b1BDMoxEkga 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 a{+Gk&(?C5r6Bsr;`uWiOOY4808u-7&wAKv( literal 108032 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 Q^1+jP=JY><|DXo`1_(rl5C8xG From f458805c98b6336ad3c2d3f1cdca8b119d293649 Mon Sep 17 00:00:00 2001 From: Ahmed Schrute Date: Sun, 13 Mar 2022 16:55:15 -0700 Subject: [PATCH 11/26] Update Unit Tests --- .github/workflows/unit_tests.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.github/workflows/unit_tests.yml b/.github/workflows/unit_tests.yml index 6d92c049..eea567b2 100644 --- a/.github/workflows/unit_tests.yml +++ b/.github/workflows/unit_tests.yml @@ -28,12 +28,6 @@ jobs: path: ./project/EmptyProject/Assets lfs: true - # Editor tests not needed (Package is not imported) - - name: Remove Editor tests - run: | - rm -rf ./project/EmptyProject/Assets/Tests/Editor - rm ./project/EmptyProject/Assets/Tests/Editor.meta - - name: Run Tests using Unity TestRunner uses: game-ci/unity-test-runner@v2 id: tests From 659893ce1312a87e9b5c62963cb929716506b912 Mon Sep 17 00:00:00 2001 From: Ahmed Schrute Date: Mon, 14 Mar 2022 11:56:52 -0700 Subject: [PATCH 12/26] Update LProto enums for Tests --- Tests/Runtime/MobiledgeX_RuntimeTests.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Tests/Runtime/MobiledgeX_RuntimeTests.cs b/Tests/Runtime/MobiledgeX_RuntimeTests.cs index 44d58859..d23913a7 100644 --- a/Tests/Runtime/MobiledgeX_RuntimeTests.cs +++ b/Tests/Runtime/MobiledgeX_RuntimeTests.cs @@ -232,7 +232,7 @@ public void UDPTest(string orgName, string appName, string appVers, int timeOutM var task = Task.Run(async () => { string hostName = await GetHostHelper(mxi, "udp"); - MobiledgeXUDPClient udpClient = new MobiledgeXUDPClient(hostName, mxi.GetAppPort(LProto.L_PROTO_UDP).public_port); + MobiledgeXUDPClient udpClient = new MobiledgeXUDPClient(hostName, mxi.GetAppPort(LProto.Udp).public_port); return UDPMessageHelper(udpClient, "ping", timeOutMs); }); Assert.True(task.Result == "pong"); @@ -278,14 +278,14 @@ public async Task GetUrlHelper(MobiledgeXIntegration mxi, string proto, switch (proto) { case "udp": - appPort = mxi.GetAppPort(LProto.L_PROTO_UDP, port); + appPort = mxi.GetAppPort(LProto.Udp, port); break; case "ws": case "wss": case "http": case "https": default: - appPort = mxi.GetAppPort(LProto.L_PROTO_TCP, port); + appPort = mxi.GetAppPort(LProto.Tcp, port); break; } @@ -318,14 +318,14 @@ public async Task GetHostHelper(MobiledgeXIntegration mxi, string proto, switch (proto) { case "udp": - appPort = mxi.GetAppPort(LProto.L_PROTO_UDP, port); + appPort = mxi.GetAppPort(LProto.Udp, port); break; case "ws": case "wss": case "http": case "https": default: - appPort = mxi.GetAppPort(LProto.L_PROTO_TCP, port); + appPort = mxi.GetAppPort(LProto.Tcp, port); break; } return mxi.GetHost(appPort); From 35286cfcfb1cbd24c4047b1b5dec2f55fc0e8b84 Mon Sep 17 00:00:00 2001 From: Ahmed Schrute Date: Mon, 14 Mar 2022 12:28:46 -0700 Subject: [PATCH 13/26] Fix compilation errors, switch to eu-staging for testinh --- .github/workflows/unit_tests.yml | 6 ++++ Editor/MobiledgeXEditorWindow.cs | 8 +++-- Tests/Runtime/MobiledgeX_RuntimeTests.cs | 44 +++++++++++------------- 3 files changed, 33 insertions(+), 25 deletions(-) diff --git a/.github/workflows/unit_tests.yml b/.github/workflows/unit_tests.yml index eea567b2..f17de96b 100644 --- a/.github/workflows/unit_tests.yml +++ b/.github/workflows/unit_tests.yml @@ -28,6 +28,12 @@ jobs: path: ./project/EmptyProject/Assets lfs: true + # Editor tests not needed (Package is not imported) + - name: Remove Editor tests + run: | + rm -rf ./project/EmptyProject/Assets/Tests/Editor + rm ./project/EmptyProject/Assets/Tests/Editor.meta + - name: Run Tests using Unity TestRunner uses: game-ci/unity-test-runner@v2 id: tests diff --git a/Editor/MobiledgeXEditorWindow.cs b/Editor/MobiledgeXEditorWindow.cs index 4fab7464..d65edbac 100644 --- a/Editor/MobiledgeXEditorWindow.cs +++ b/Editor/MobiledgeXEditorWindow.cs @@ -224,8 +224,12 @@ void OnInspectorUpdate() string GetSDKVersion() { TextAsset asset = (TextAsset)AssetDatabase.LoadAssetAtPath("Packages/com.mobiledgex.sdk/package.json", typeof(TextAsset)); - string sdkVersion = JsonUtility.FromJson(asset.text).version; - return "v" + sdkVersion; + if (asset != null) + { + string sdkVersion = JsonUtility.FromJson(asset.text).version; + return "v" + sdkVersion; + } + return "DEBUG_VER"; } /// diff --git a/Tests/Runtime/MobiledgeX_RuntimeTests.cs b/Tests/Runtime/MobiledgeX_RuntimeTests.cs index d23913a7..110a23b6 100644 --- a/Tests/Runtime/MobiledgeX_RuntimeTests.cs +++ b/Tests/Runtime/MobiledgeX_RuntimeTests.cs @@ -1,5 +1,5 @@ /** -* Copyright 2018-2021 MobiledgeX, Inc. All rights and licenses reserved. +* Copyright 2018-2022 MobiledgeX, Inc. All rights and licenses reserved. * MobiledgeX, Inc. 156 2nd Street #408, San Francisco, CA 94105 * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -29,23 +29,17 @@ namespace MobiledgeX public class MobiledgeX_RuntimeTests { MobiledgeXIntegration mxi; + string dmeHostOverride; + uint dmePortOverride; + #region Testing Setup [OneTimeSetUp] public void MobiledgeXEnvironmentSetup() { MobiledgeXIntegration.settings.region = "EU"; //For Testing Purposes, works in Editor only. - if (!UnityEditorInternal.InternalEditorUtility.isHumanControllingUs) - { - return; - } - if (!File.Exists(Path.Combine(Application.dataPath, "Plugins/MobiledgeX/iOS/PlatformIntegration.m")) && - !File.Exists(Path.Combine(Application.dataPath, "Plugins/MobiledgeX/link.xml")) && - !File.Exists(Path.Combine(Application.dataPath, "Plugins/MobiledgeX/MatchingEngineSDKRestLibrary.dll")) && - !File.Exists(Path.Combine(Application.dataPath, "Resources/MobiledgeXSettings.asset"))) - { - Assert.Fail("MobiledgeX Plugins are not loaded in the project, Can't perform tests"); - } + dmeHostOverride = "eu-stage.dme.mobiledgex.net"; + dmePortOverride = 38001; } #endregion @@ -53,7 +47,7 @@ public void MobiledgeXEnvironmentSetup() #region Run Time Tests [Test] - [TestCase("MobiledgeX-Samples", "sdktest", "9.0")] + [TestCase("Ahmed-Org", "sdk-test", "9.0")] public void RegisterClient(string orgName, string appName, string appVers) { using (MobiledgeXIntegration mxi = new MobiledgeXIntegration(new CarrierInfoClass(), null, new UniqueIDClass(), new TestDeviceInfo())) @@ -70,7 +64,7 @@ public void RegisterClient(string orgName, string appName, string appVers) } [Test] - [TestCase("MobiledgeX-Samples", "sdktest", "9.0")] + [TestCase("Ahmed-Org", "sdk-test", "9.0")] public void FindCloudlet(string orgName, string appName, string appVers) { using (MobiledgeXIntegration mxi = new MobiledgeXIntegration(new CarrierInfoClass(), null, new UniqueIDClass(), new TestDeviceInfo())) @@ -89,9 +83,9 @@ public void FindCloudlet(string orgName, string appName, string appVers) } [Test] - [TestCase("MobiledgeX-Samples", "sdktest", "9.0", "http", 8085)] - [TestCase("MobiledgeX-Samples", "sdktest", "9.0", "https", 2015)] - [TestCase("MobiledgeX-Samples", "sdktest", "9.0", "tcp", 2016)] + [TestCase("Ahmed-Org", "sdk-test", "9.0", "http", 8085)] + [TestCase("Ahmed-Org", "sdk-test", "9.0", "https", 2015)] + [TestCase("Ahmed-Org", "sdk-test", "9.0", "tcp", 2016)] public void GetUrl(string orgName, string appName, string appVers, string proto, int port) { using (MobiledgeXIntegration mxi = new MobiledgeXIntegration(new CarrierInfoClass(), null, new UniqueIDClass(), new TestDeviceInfo())) @@ -110,7 +104,11 @@ public void GetUrl(string orgName, string appName, string appVers, string proto, } [Test] - [TestCase("MobiledgeX-Samples", "sdktest", "9.0", "http", 8085)] + [TestCase("Ahmed-Org", "sdk-test", "9.0", "http", 8085)] + [TestCase("Ahmed-Org", "sdk-test", "9.0", "https", 2015)] + [TestCase("Ahmed-Org", "sdk-test", "9.0", "tcp", 2016)] + [TestCase("Ahmed-Org", "sdk-test", "9.0", "ws", 3765)] + [TestCase("Ahmed-Org", "sdk-test", "9.0", "udp", 2015)] public void GetHost(string orgName, string appName, string appVers, string proto, int port) { using (MobiledgeXIntegration mxi = new MobiledgeXIntegration(new CarrierInfoClass(), null, new UniqueIDClass(), new TestDeviceInfo())) @@ -161,7 +159,7 @@ public void RegisterClientFaliure(string orgName, string appName, string appVers } [Test] - [TestCase("MobiledgeX-Samples", "sdktest", "9.0", 104.1954, 35.8617)] + [TestCase("Ahmed-Org", "sdk-test", "9.0", 104.1954, 35.8617)] public void FindCloudletFaliure(string orgName, string appName, string appVers, double latitude, double longitude) { using (MobiledgeXIntegration mxi = new MobiledgeXIntegration(new CarrierInfoClass(), null, new UniqueIDClass(), new TestDeviceInfo())) @@ -197,7 +195,7 @@ public void FindCloudletFaliure(string orgName, string appName, string appVers, } [Test] - [TestCase("MobiledgeX-Samples", "sdktest", "9.0", "ws", 3765, 2000)] + [TestCase("Ahmed-Org", "sdk-test", "9.0", "ws", 3765, 2000)] public void WebSocketTest(string orgName, string appName, string appVers, string proto, int port, int timeOutMs) { using (MobiledgeXIntegration mxi = new MobiledgeXIntegration(new CarrierInfoClass(), null, new UniqueIDClass(), new TestDeviceInfo())) @@ -221,7 +219,7 @@ public void WebSocketTest(string orgName, string appName, string appVers, string [Test] - [TestCase("MobiledgeX-Samples", "sdktest", "9.0", 2000)] + [TestCase("Ahmed-Org", "sdk-test", "9.0", 2000)] public void UDPTest(string orgName, string appName, string appVers, int timeOutMs) { using (MobiledgeXIntegration mxi = new MobiledgeXIntegration(new CarrierInfoClass(), null, new UniqueIDClass(), new TestDeviceInfo())) @@ -245,14 +243,14 @@ public void UDPTest(string orgName, string appName, string appVers, int timeOutM public async Task RegisterHelper(MobiledgeXIntegration mxi) { - bool check = await mxi.Register(); + bool check = await mxi.Register(dmeHostOverride, dmePortOverride); await Task.Delay(TimeSpan.FromMilliseconds(1000)); return check; } public async Task FindCloudletHelper(MobiledgeXIntegration mxi) { - bool foundCloudlet = await mxi.FindCloudlet(); + bool foundCloudlet = await mxi.FindCloudlet(dmeHostOverride, dmePortOverride); await Task.Delay(TimeSpan.FromMilliseconds(1000)); return foundCloudlet; } From ec580cdae40b6194395cac2fb3ec199a6a8ea32a Mon Sep 17 00:00:00 2001 From: Ahmed Schrute Date: Mon, 21 Mar 2022 11:34:36 -0700 Subject: [PATCH 14/26] Pipeline initial --- .github/workflows/docs_update.yml | 34 +++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 .github/workflows/docs_update.yml diff --git a/.github/workflows/docs_update.yml b/.github/workflows/docs_update.yml new file mode 100644 index 00000000..63c97444 --- /dev/null +++ b/.github/workflows/docs_update.yml @@ -0,0 +1,34 @@ + + +name: MobiledgeX Unity Docs Update + +on: [release] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Check out Docs branch + uses: actions/checkout@v2 + with: + ref: docs-config + token: ${ secrets.GITHUB_TOKEN ) + + - name: Check out the SDK master branch (REST) + uses: actions/checkout@v2 + with: + ref: master + path: ./sdk + token: ${ secrets.GITHUB_TOKEN ) + + - name: Update Docs + uses: mattnotmitt/doxygen-action@v1.9.2 + with: + doxyfile-path: './config/Doxyfile' + + - name: Commit Doxygen Updates + uses: stefanzweifel/git-auto-commit-action@v4 + with: + commit_message: Docs Automated Updates + branch: docs + push_options: '--force' \ No newline at end of file From e44f6107b4df2cd3c366a5d1ee5e6ef682e7c586 Mon Sep 17 00:00:00 2001 From: Ahmed Schrute Date: Mon, 21 Mar 2022 11:50:50 -0700 Subject: [PATCH 15/26] Run action on push for testing only --- .github/workflows/docs_update.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/docs_update.yml b/.github/workflows/docs_update.yml index 63c97444..4d0da432 100644 --- a/.github/workflows/docs_update.yml +++ b/.github/workflows/docs_update.yml @@ -2,7 +2,7 @@ name: MobiledgeX Unity Docs Update -on: [release] +on: [push] jobs: build: @@ -12,14 +12,12 @@ jobs: uses: actions/checkout@v2 with: ref: docs-config - token: ${ secrets.GITHUB_TOKEN ) - name: Check out the SDK master branch (REST) uses: actions/checkout@v2 with: ref: master path: ./sdk - token: ${ secrets.GITHUB_TOKEN ) - name: Update Docs uses: mattnotmitt/doxygen-action@v1.9.2 From e1adbb47f1af8763fec1c5eb545609f7d9cef654 Mon Sep 17 00:00:00 2001 From: Ahmed Schrute Date: Mon, 21 Mar 2022 12:25:56 -0700 Subject: [PATCH 16/26] Clean working directory before commit --- .github/workflows/docs_update.yml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/workflows/docs_update.yml b/.github/workflows/docs_update.yml index 4d0da432..63bda87d 100644 --- a/.github/workflows/docs_update.yml +++ b/.github/workflows/docs_update.yml @@ -23,7 +23,14 @@ jobs: uses: mattnotmitt/doxygen-action@v1.9.2 with: doxyfile-path: './config/Doxyfile' - + + - name: Clean before commit + run: | + sudo rm -rf ./sdk + sudo mv docs/html/* docs/ + sudo rm -rf docs/html + shell: bash + - name: Commit Doxygen Updates uses: stefanzweifel/git-auto-commit-action@v4 with: From 2c5c38546d3f2636fe54effdfe3a1be898dcfd95 Mon Sep 17 00:00:00 2001 From: Ahmed Schrute Date: Mon, 21 Mar 2022 19:19:31 -0700 Subject: [PATCH 17/26] Update tracked files --- .github/workflows/docs_update.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/docs_update.yml b/.github/workflows/docs_update.yml index 63bda87d..b84817cd 100644 --- a/.github/workflows/docs_update.yml +++ b/.github/workflows/docs_update.yml @@ -36,4 +36,5 @@ jobs: with: commit_message: Docs Automated Updates branch: docs - push_options: '--force' \ No newline at end of file + push_options: '--force' + add_options: '-u' From f859d73392a21f382d6abd403285ab609fafd58e Mon Sep 17 00:00:00 2001 From: Ahmed Schrute Date: Mon, 21 Mar 2022 22:15:35 -0700 Subject: [PATCH 18/26] Skip internal checkout step --- .github/workflows/docs_update.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/docs_update.yml b/.github/workflows/docs_update.yml index b84817cd..c2e2e193 100644 --- a/.github/workflows/docs_update.yml +++ b/.github/workflows/docs_update.yml @@ -38,3 +38,4 @@ jobs: branch: docs push_options: '--force' add_options: '-u' + skip_checkout: true From 70d7719ed54b398f74523afd94034743e0717371 Mon Sep 17 00:00:00 2001 From: Ahmed Schrute Date: Mon, 21 Mar 2022 22:17:39 -0700 Subject: [PATCH 19/26] Remove add options --- .github/workflows/docs_update.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/docs_update.yml b/.github/workflows/docs_update.yml index c2e2e193..d787ede1 100644 --- a/.github/workflows/docs_update.yml +++ b/.github/workflows/docs_update.yml @@ -37,5 +37,4 @@ jobs: commit_message: Docs Automated Updates branch: docs push_options: '--force' - add_options: '-u' skip_checkout: true From 071ea70d85665b94ab80e016098d12931192c1e9 Mon Sep 17 00:00:00 2001 From: Ahmed Schrute Date: Mon, 21 Mar 2022 22:21:02 -0700 Subject: [PATCH 20/26] Update Docs Navbar --- .github/workflows/docs_update.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/docs_update.yml b/.github/workflows/docs_update.yml index d787ede1..50e04aa4 100644 --- a/.github/workflows/docs_update.yml +++ b/.github/workflows/docs_update.yml @@ -29,6 +29,7 @@ jobs: sudo rm -rf ./sdk sudo mv docs/html/* docs/ sudo rm -rf docs/html + sudo cp ./config/tab_b.png ./docs/tab_b.png shell: bash - name: Commit Doxygen Updates From 2e6183498d2cd99b3b097447fe1e9c35ca20b451 Mon Sep 17 00:00:00 2001 From: Ahmed Schrute Date: Mon, 21 Mar 2022 22:25:43 -0700 Subject: [PATCH 21/26] Update docs on release only --- .github/workflows/docs_update.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs_update.yml b/.github/workflows/docs_update.yml index 50e04aa4..d9625556 100644 --- a/.github/workflows/docs_update.yml +++ b/.github/workflows/docs_update.yml @@ -2,7 +2,7 @@ name: MobiledgeX Unity Docs Update -on: [push] +on: [release] jobs: build: From b8681206c1399d252987ac932a28013f80327058 Mon Sep 17 00:00:00 2001 From: ah1053 Date: Wed, 23 Mar 2022 10:15:17 -0700 Subject: [PATCH 22/26] Use docs branch as the base --- .github/workflows/docs_update.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs_update.yml b/.github/workflows/docs_update.yml index d9625556..622dc64e 100644 --- a/.github/workflows/docs_update.yml +++ b/.github/workflows/docs_update.yml @@ -11,7 +11,7 @@ jobs: - name: Check out Docs branch uses: actions/checkout@v2 with: - ref: docs-config + ref: docs - name: Check out the SDK master branch (REST) uses: actions/checkout@v2 From 008dfd44ecea2c93a113301f5cee8b03addafd24 Mon Sep 17 00:00:00 2001 From: ah1053 Date: Fri, 8 Apr 2022 14:16:34 -0700 Subject: [PATCH 23/26] CarrierInfoIntegration comments --- Runtime/Scripts/CarrierInfoIntegration.cs | 145 +++++++++++++++++++++- 1 file changed, 140 insertions(+), 5 deletions(-) diff --git a/Runtime/Scripts/CarrierInfoIntegration.cs b/Runtime/Scripts/CarrierInfoIntegration.cs index 814cfbb2..e28dd90b 100644 --- a/Runtime/Scripts/CarrierInfoIntegration.cs +++ b/Runtime/Scripts/CarrierInfoIntegration.cs @@ -25,6 +25,9 @@ namespace MobiledgeX { + /// + /// CarrierInfoException is thrown if there is an error in Roaming Detection. + /// public class CarrierInfoException : Exception { public CarrierInfoException(string message) @@ -37,7 +40,9 @@ public CarrierInfoException(string message, Exception innerException) { } } - + /// + /// CarrierInfoClass is responsible for collecting data about the device and the telecom carrier. + /// public class CarrierInfoClass : CarrierInfo { #pragma warning disable 0649 @@ -125,6 +130,10 @@ public CarrierInfoClass() }*/ } + /// + /// Gets the Android SDK Version (android.os.Build$VERSION) + /// + /// Android SDK Version (integer) public int getAndroidSDKVers() { AndroidJavaClass version = PlatformIntegrationUtil.GetAndroidJavaClass("android.os.Build$VERSION"); @@ -136,6 +145,11 @@ public int getAndroidSDKVers() return PlatformIntegrationUtil.GetStatic(version, "SDK_INT"); } + /// + /// Obtains the TelephonyManager object from the device(Android Only). + /// https://developer.android.com/reference/android/telephony/TelephonyManager + /// + /// Telephony Manager(AndroidJavaObject) public AndroidJavaObject GetTelephonyManager() { AndroidJavaClass unityPlayer = PlatformIntegrationUtil.GetAndroidJavaClass("com.unity3d.player.UnityPlayer"); @@ -195,6 +209,11 @@ public AndroidJavaObject GetTelephonyManager() return telManager; } + /// + /// Gets the current carrier name from the device + /// (Android) Requires TelephonyManager + /// + /// Network Operator Name (string) public string GetCurrentCarrierName() { string networkOperatorName = ""; @@ -222,6 +241,11 @@ public string GetCurrentCarrierName() return networkOperatorName; } + /// + /// MCC-MNC (Mobile Country Code- Mobile Network Code) + /// Gets the MCC-MNC code from the device, used for selecting the regional DME + /// + /// MCC-MNC code (string) public string GetMccMnc() { string mccmnc = null; @@ -252,7 +276,7 @@ public string GetMccMnc() return mccmnc; } - KeyValuePair GetCidKeyValuePair(AndroidJavaObject cellInfo) + private KeyValuePair GetCidKeyValuePair(AndroidJavaObject cellInfo) { KeyValuePair pair = new KeyValuePair(null, 0); @@ -321,6 +345,12 @@ KeyValuePair GetCidKeyValuePair(AndroidJavaObject cellInfo) } + /// + /// Obtains a list of Cellular Info from the device. + /// (Android)Requires Access to TelephonyManager and permission to access the user fine location. + /// https://developer.android.com/reference/android/telephony/CellInfo + /// + /// List of KeyValue Pairs public List> GetCellInfoList() { if (Application.platform != RuntimePlatform.Android) @@ -378,6 +408,10 @@ public List> GetCellInfoList() return cellIDList; } + /// + /// Obtains CellIdentity from the device + /// + /// CellIdentity (unsinged long) public ulong GetCellID() { /* @@ -399,6 +433,11 @@ public ulong GetCellID() return 0; } + /// + /// Obtains the NetworkDataType (GPRS, LTE ... ) + /// (Android)Requires READ_PHONE_STATE permission + /// + /// NetworkDataType (string) public string GetDataNetworkPath() { AndroidJavaObject telManager = GetTelephonyManager(); @@ -427,6 +466,11 @@ public string GetDataNetworkPath() } } + /// + /// Obtains the Signal Strength of the network + /// (Android) Requires TelephonyManager + /// + /// Signal Strength (unsigned long) public ulong GetSignalStrength() { AndroidJavaObject telManager = GetTelephonyManager(); @@ -467,6 +511,10 @@ public ulong GetSignalStrength() [DllImport("__Internal")] private static extern string _getISOCountryCodeFromCarrier(); + /// + /// Gets the current carrier name from the device + /// + /// Network Operator Name (string) public string GetCurrentCarrierName() { string networkOperatorName = ""; @@ -477,6 +525,11 @@ public string GetCurrentCarrierName() return networkOperatorName; } + /// + /// MCC-MNC (Mobile Country Code- Mobile Network Code) + /// Gets the MCC-MNC code from the device used for selecting the regional DME + /// + /// MCC-MNC code (string) public string GetMccMnc() { string mccmnc = null; @@ -487,6 +540,10 @@ public string GetMccMnc() return mccmnc; } + /// + /// Obtains CellIdentity from the device + /// + /// CellIdentity (unsinged long) public ulong GetCellID() { int cellID = 0; @@ -497,16 +554,33 @@ public ulong GetCellID() return (ulong)cellID; } + /// + /// Obtains the NetworkDataType (GPRS, LTE ... ) + /// Requires READ_PHONE_STATE permission on Android Phones + /// + /// NetworkDataType (string) public string GetDataNetworkPath() { return ""; } + /// + /// Obtains the Signal Strength of the network + /// + /// Signal Strength (unsigned long) public ulong GetSignalStrength() { return 0; } + /// + /// Returns wether the device is on the normal provider network or another network. + /// This method compares between the ISO Country code obtained from the DeviceLocation and from the DeviceCarrier + /// (Asynchronous method) (iOS only) + /// + /// (double) + /// (double) + /// boolean value public async Task IsRoaming(double longitude, double latitude) { if (Application.platform == RuntimePlatform.IPhonePlayer) @@ -544,6 +618,13 @@ public async Task IsRoaming(double longitude, double latitude) return false; } + /// + /// Convert GPS (longitude, latitude) to ISOCountryCode + /// (Asynchronous method)(iOS only) + /// + /// (double) + /// (double) + /// ISOCountryCode (string) public async Task ConvertGPSToISOCountryCode(double longitude, double latitude) { if (Application.platform == RuntimePlatform.IPhonePlayer) @@ -563,6 +644,11 @@ public async Task ConvertGPSToISOCountryCode(double longitude, double la return null; } + /// + /// Gets the ISO Country Code from the device location. + /// (iOS only) + /// + /// ISO Country Code (string) public string GetISOCountryCodeFromGPS() { string isoCC = null; @@ -573,6 +659,11 @@ public string GetISOCountryCodeFromGPS() return isoCC; } + /// + /// Gets the ISO Country Code from the device carrier. + /// (iOS only) + /// + /// ISO Country Code (string) public string GetISOCountryCodeFromCarrier() { string isoCC = null; @@ -585,31 +676,52 @@ public string GetISOCountryCodeFromCarrier() #else - // Implement CarrierInfo + /// + /// Gets the current carrier name from the device + /// + /// Network Operator Name (string) public string GetCurrentCarrierName() { Logger.Log("GetCurrentCarrierName is NOT IMPLEMENTED"); return null; } + /// + /// MCC-MNC (Mobile Country Code- Mobile Network Code) + /// Gets the MCC-MNC code from the device used for selecting the regional DME + /// + /// MCC-MNC code (string) public string GetMccMnc() { Logger.Log("GetMccMnc is NOT IMPLEMENTED"); return null; } + /// + /// Obtains CellIdentity from the device + /// + /// CellIdentity (unsinged long) public ulong GetCellID() { Logger.Log("GetCellID is NOT IMPLEMENTED"); return 0; } + /// + /// Obtains the NetworkDataType (GPRS, LTE ... ) + /// Requires READ_PHONE_STATE permission on Android Phones + /// + /// NetworkDataType (string) public string GetDataNetworkPath() { Logger.Log("GetDataNetworkPath is NOT IMPLEMENTED"); return ""; } + /// + /// Obtains the Signal Strength of the network + /// + /// Signal Strength (unsigned long) public ulong GetSignalStrength() { Logger.Log("GetSignalStrength is NOT IMPLEMENTED"); @@ -620,30 +732,53 @@ public ulong GetSignalStrength() } - // Used for testing in UnityEditor (any target platform) + /// + /// Used for testing in UnityEditor (any target platform) + /// public class TestCarrierInfoClass : CarrierInfo { - // Implement CarrierInfo + /// + /// Gets the current carrier name from the device + /// + /// Network Operator Name (string) public string GetCurrentCarrierName() { return ""; } + /// + /// MCC-MNC (Mobile Country Code- Mobile Network Code) + /// Gets the MCC-MNC code from the device used for selecting the regional DME + /// + /// MCC-MNC code (string) public string GetMccMnc() { return ""; } + /// + /// Obtains CellIdentity from the device + /// + /// CellIdentity (unsinged long) public ulong GetCellID() { return 0; } + /// + /// Obtains the NetworkDataType (GPRS, LTE ... ) + /// Requires READ_PHONE_STATE permission on Android Phones + /// + /// NetworkDataType (string) public string GetDataNetworkPath() { return ""; } + /// + /// Obtains the Signal Strength of the network + /// + /// Signal Strength (unsigned long) public ulong GetSignalStrength() { return 0; From 4c17e6be57db8425a32262f5d6274890952798e5 Mon Sep 17 00:00:00 2001 From: Ahmed Schrute Date: Mon, 11 Apr 2022 11:14:57 -0700 Subject: [PATCH 24/26] DeviceInfoIntegration docs --- Runtime/Scripts/CarrierInfoIntegration.cs | 2 +- Runtime/Scripts/DeviceInfoIntegration.cs | 37 ++++++++++++++++++++--- 2 files changed, 34 insertions(+), 5 deletions(-) diff --git a/Runtime/Scripts/CarrierInfoIntegration.cs b/Runtime/Scripts/CarrierInfoIntegration.cs index e28dd90b..c7100ea7 100644 --- a/Runtime/Scripts/CarrierInfoIntegration.cs +++ b/Runtime/Scripts/CarrierInfoIntegration.cs @@ -1,5 +1,5 @@ /** - * Copyright 2019-2021 MobiledgeX, Inc. All rights and licenses reserved. + * Copyright 2019-2022 MobiledgeX, Inc. All rights and licenses reserved. * MobiledgeX, Inc. 156 2nd Street #408, San Francisco, CA 94105 * * Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/Runtime/Scripts/DeviceInfoIntegration.cs b/Runtime/Scripts/DeviceInfoIntegration.cs index c612ac0c..24f222f7 100644 --- a/Runtime/Scripts/DeviceInfoIntegration.cs +++ b/Runtime/Scripts/DeviceInfoIntegration.cs @@ -1,5 +1,5 @@ /* - * Copyright 2019-2021 MobiledgeX, Inc. All rights and licenses reserved. + * Copyright 2019-2022 MobiledgeX, Inc. All rights and licenses reserved. * MobiledgeX, Inc. 156 2nd Street #408, San Francisco, CA 94105 * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -21,9 +21,12 @@ namespace MobiledgeX { + /// + /// DeviceInfoIntegration is responsible for collecting Device low level information across different operating systems + /// public class DeviceInfoIntegration : DeviceInfo { - CarrierInfo overrideCarrierInfo; + private CarrierInfo overrideCarrierInfo; public DeviceInfoIntegration(CarrierInfo overrideCarrierInfo = null) { @@ -34,6 +37,10 @@ public DeviceInfoIntegration() { } + /// + /// Retrieves the device information (DataNetworkPath, CarrierName, SignalStrength, DeviceOS, DeviceModel) + /// + /// Device Information Dictionary(string, string) public Dictionary GetDeviceInfo() { CarrierInfo carrierInfo = overrideCarrierInfo; @@ -51,16 +58,28 @@ public Dictionary GetDeviceInfo() return deviceInfo; } #if UNITY_IOS + /// + /// Returns wether the OS supports the network utility Ping (ICMP packets) + /// + /// boolean public bool IsPingSupported() { - return false; + return false; } #elif UNITY_ANDROID + /// + /// Returns wether the OS supports the network utility Ping (ICMP packets) + /// + /// boolean public bool IsPingSupported() { return true; } #else //unsupported platform + /// + /// Returns wether the OS supports the network utility Ping (ICMP packets) + /// + /// boolean public bool IsPingSupported() { return true; @@ -69,15 +88,25 @@ public bool IsPingSupported() } - // Used for DeviceInfo in UnityEditor (any target platform) + /// + /// Used for DeviceInfo in UnityEditor (any target platform) + /// public class TestDeviceInfo : DeviceInfo { + /// + /// Retrieves the device information (DataNetworkPath, CarrierName, SignalStrength, DeviceOS, DeviceModel) + /// + /// Device Information Dictionary(string, string) public Dictionary GetDeviceInfo() { Logger.Log("DeviceInfo not implemented!"); return null; } + /// + /// Returns wether the OS supports the network utility Ping (ICMP packets) + /// + /// boolean public bool IsPingSupported() { return true; From 4655756f2f69a5e8aafb14f197007a9abd35cc1f Mon Sep 17 00:00:00 2001 From: Ahmed Schrute Date: Mon, 11 Apr 2022 11:58:33 -0700 Subject: [PATCH 25/26] Logger.cs, MobiledgeXIntegration classes --- Runtime/Scripts/Logger.cs | 13 ++- Runtime/Scripts/MobiledgeXIntegration.cs | 90 +++++++++++++------ .../Scripts/MobiledgeXIntegrationConfig.cs | 26 +++++- .../Scripts/MobiledgeXIntegrationHelper.cs | 9 +- 4 files changed, 107 insertions(+), 31 deletions(-) diff --git a/Runtime/Scripts/Logger.cs b/Runtime/Scripts/Logger.cs index 989dee40..b3508fa1 100644 --- a/Runtime/Scripts/Logger.cs +++ b/Runtime/Scripts/Logger.cs @@ -1,5 +1,5 @@ /** - * Copyright 2018-2021 MobiledgeX, Inc. All rights and licenses reserved. + * Copyright 2018-2022 MobiledgeX, Inc. All rights and licenses reserved. * MobiledgeX, Inc. 156 2nd Street #408, San Francisco, CA 94105 * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,10 +19,17 @@ namespace MobiledgeX { + /// + /// Internal class for MobiledgeX SDK logs + /// public class Logger { + /// + /// Defines the log level for the SDK, Its advised to set the log level to ErrorsOnly in a production environment. + /// public enum LogType { All, ErrorsAndWarnings, ErrorsOnly }; - public static void LogWarning(string message) + + internal static void LogWarning(string message) { if (MobiledgeXIntegration.settings.logType == LogType.All || MobiledgeXIntegration.settings.logType == LogType.ErrorsAndWarnings) { @@ -30,7 +37,7 @@ public static void LogWarning(string message) } } - public static void Log(string message) + internal static void Log(string message) { if (MobiledgeXIntegration.settings.logType == LogType.All) { diff --git a/Runtime/Scripts/MobiledgeXIntegration.cs b/Runtime/Scripts/MobiledgeXIntegration.cs index 6d4620ed..10639e74 100644 --- a/Runtime/Scripts/MobiledgeXIntegration.cs +++ b/Runtime/Scripts/MobiledgeXIntegration.cs @@ -34,54 +34,94 @@ namespace MobiledgeX { public partial class MobiledgeXIntegration : IDisposable { - public static string sdkVersion { get; set; } + internal static string sdkVersion { get; set; } /// /// Scriptable Object Holding MobiledgeX Settings (OrgName, AppName, AppVers) /// public static MobiledgeXSettings settings = Resources.Load("MobiledgeXSettings"); + private PlatformIntegration pIntegration; + /// - /// MatchingEngine objects + /// MobiledgeX MatchingEngine, this is MobiledgeX C# SDK + /// Please refer to the documentation here + /// https://api.mobiledgex.net/swagger/mexdemo/edge-cloud-sdk-csharp/html/index.html /// - PlatformIntegration pIntegration; public MatchingEngine matchingEngine; - /// - /// MatchingEngine API parameters + /// carrierName depends on the available subscriber SIM card and roaming carriers, and must be supplied by platform API. + /// + public string carrierName { get; set; } = ""; + /// + /// Organization name + /// + public string orgName { get; set; } = ""; + /// + /// Your MobiledgeX console appName + /// + public string appName { get; set; } = ""; + /// + /// Your app version uploaded to MobiledgeX docker registry. + /// + public string appVers { get; set; } = ""; + /// + /// An opaque string value supplied by the developer. + /// + public string developerAuthToken { get; set; } = ""; + /// + /// Cellular Identity /// - public string carrierName { get; set; } = ""; // carrierName depends on the available subscriber SIM card and roaming carriers, and must be supplied by platform API. - public string orgName { get; set; } = ""; // Organization name - public string appName { get; set; } = ""; // Your appName, if you have created this in the MobiledgeX console. - public string appVers { get; set; } = ""; // Your app version uploaded to the docker registry. - public string developerAuthToken { get; set; } = ""; // This is an opaque string value supplied by the developer. public uint cellID { get; set; } = 0; + /// + /// The UniqueIdentifier type + /// public string uniqueIDType { get; set; } = ""; + /// + /// The UniqueIdentifier for the device + /// public string uniqueID { get; set; } = ""; + /// + /// The Device Location + /// public Loc location { get; set; } = new Loc(); - /// - /// Public MatchingEngine Reply/ State properties + /// Whether the most recent registerClient call was successful + /// + public bool RegisterStatus { get { return latestRegisterStatus; } } + /// + /// Stored to be used in GetUrl, GetHost, GetPort, Get[]Connection + /// + public FindCloudletReply FindCloudletReply { get { return latestFindCloudletReply; } } + /// + /// Whether the most recent verifyLocation call was successful + /// + public bool VerifyLocationStatus { get { return latestVerifyLocationStatus; } } + /// + /// FindCloudlet mode (Proximity Mode, Performance Mode) + /// + public FindCloudletMode Mode { get { return mode; } } + /// + /// Latest Application Port object /// - public bool RegisterStatus { get { return latestRegisterStatus; } } // Whether the most recent registerClient call was successful - public FindCloudletReply FindCloudletReply { get { return latestFindCloudletReply; } } // Stored to be used in GetUrl, GetHost, GetPort, Get[]Connection - public bool VerifyLocationStatus { get { return latestVerifyLocationStatus; } } // Whether the most recent verifyLocation call was successful - public FindCloudletMode Mode { get { return mode; } } // FindCloudlet mode public AppPort AppPort { get { return latestAppPort; } } + /// + /// ApplicationPorts List + /// public AppPort[] AppPortList { get { return latestAppPortList; } } /// /// MatchingEngine Reply/ State variables (for internal use) /// - bool latestRegisterStatus = false; // Whether the most recent registerClient call was successful - FindCloudletReply latestFindCloudletReply = null; // Stored to be used in GetUrl, GetHost, GetPort, Get[]Connection - bool latestVerifyLocationStatus = false; // Whether the most recent verifyLocation call was successful - FindCloudletMode mode = FindCloudletMode.PROXIMITY; // FindCloudlet mode - AppPort latestAppPort = null; - AppPort[] latestAppPortList = null; - Location fallbackLocation = new Location(0, 0); - - string region + private bool latestRegisterStatus = false; // Whether the most recent registerClient call was successful + private FindCloudletReply latestFindCloudletReply = null; // Stored to be used in GetUrl, GetHost, GetPort, Get[]Connection + private bool latestVerifyLocationStatus = false; // Whether the most recent verifyLocation call was successful + private FindCloudletMode mode = FindCloudletMode.PROXIMITY; // FindCloudlet mode + private AppPort latestAppPort = null; + private AppPort[] latestAppPortList = null; + private Location fallbackLocation = new Location(0, 0); + + private string region { get { diff --git a/Runtime/Scripts/MobiledgeXIntegrationConfig.cs b/Runtime/Scripts/MobiledgeXIntegrationConfig.cs index f146e30f..7b38ecdb 100644 --- a/Runtime/Scripts/MobiledgeXIntegrationConfig.cs +++ b/Runtime/Scripts/MobiledgeXIntegrationConfig.cs @@ -1,5 +1,5 @@ /** -* Copyright 2018-2021 MobiledgeX, Inc. All rights and licenses reserved. +* Copyright 2018-2022 MobiledgeX, Inc. All rights and licenses reserved. * MobiledgeX, Inc. 156 2nd Street #408, San Francisco, CA 94105 * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -79,7 +79,12 @@ public void SetFallbackLocation(double longitude, double latitude) fallbackLocation.Longitude = longitude; fallbackLocation.Latitude = latitude; } - + /// + /// Gets the location from the IP Address + /// The location retrieved from this method is very arbitrary (ex. Country Location),this method becomes handy if the user rejects the precise location permissions. + /// The method uses FreeGeoIP API https://freegeoip.app/json/ , please refer to the FreeGeoIP API rate limiting for more details + /// + /// LocationFromIPAddress Task public static async Task GetLocationFromIP() { HttpClient httpClient = new HttpClient(); @@ -104,6 +109,9 @@ public static async Task GetLocationFromIP() } } + /// + /// Used for deserializing the FreeGeoIP API response, used in GetLocationFromIP() + /// [DataContract] public class LocationFromIPAddress { @@ -113,14 +121,28 @@ public class LocationFromIPAddress public float latitude; } + /// + /// Helper class used for deserializing JSON and Byte Streams + /// + /// DataType compatible with jsonString and Stream Objects public static class Messaging { + /// + /// Deserializes jsonString into a C# Object + /// + /// UTF8 jsonString + /// C# Object (T) public static T Deserialize(string jsonString) { MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString ?? "")); return Deserialize(ms); } + /// + /// Deserializes a Stream into a C# Object + /// + /// Stream Object + /// C# Object (T) public static T Deserialize(Stream stream) { DataContractJsonSerializer deserializer = new DataContractJsonSerializer(typeof(T)); diff --git a/Runtime/Scripts/MobiledgeXIntegrationHelper.cs b/Runtime/Scripts/MobiledgeXIntegrationHelper.cs index 603c79d2..7424ebe0 100644 --- a/Runtime/Scripts/MobiledgeXIntegrationHelper.cs +++ b/Runtime/Scripts/MobiledgeXIntegrationHelper.cs @@ -1,5 +1,5 @@ /** -* Copyright 2018-2021 MobiledgeX, Inc. All rights and licenses reserved. +* Copyright 2018-2022 MobiledgeX, Inc. All rights and licenses reserved. * MobiledgeX, Inc. 156 2nd Street #408, San Francisco, CA 94105 * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -28,6 +28,10 @@ namespace MobiledgeX { + /// + /// AppPort Exception is thrown if the SDK is not able to detect the AppPort. + /// For example: EmptyFindCloudlet, Port not found or Protocol is not supported. + /// public class AppPortException : Exception { public AppPortException(string message) @@ -41,6 +45,9 @@ public AppPortException(string message, Exception innerException) } } + /// + /// Location Struct used in MobiledgeX SDK + /// public struct Location { public Location(double longitude, double latitude) From 9f38de536cf8aa7af89047b4be50be4ef7dc176a Mon Sep 17 00:00:00 2001 From: Ahmed Schrute Date: Tue, 12 Apr 2022 11:12:16 -0700 Subject: [PATCH 26/26] MobiledgeXSettings --- Runtime/Scripts/MobiledgeXSettings.cs | 31 +++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/Runtime/Scripts/MobiledgeXSettings.cs b/Runtime/Scripts/MobiledgeXSettings.cs index dbc1ba99..5ea49fbf 100644 --- a/Runtime/Scripts/MobiledgeXSettings.cs +++ b/Runtime/Scripts/MobiledgeXSettings.cs @@ -19,15 +19,46 @@ namespace MobiledgeX { + /// + /// MobiledgeXSettings defines the settings of the connection to MobiledgeX platform + /// public class MobiledgeXSettings : ScriptableObject { + /// + /// MobiledgeX SDK Version + /// [HideInInspector] public string sdkVersion; + /// + /// (Required)Organization name + /// + [Tooltip("(Required)Organization name")] public string orgName; + /// + /// (Required)Application name + /// + [Tooltip("Required)Application Name")] public string appName; + /// + /// (Required)Application version must match the image version sumbitted to MobiledgeX docker registry. + /// + [Tooltip("(Required)Application version must match the image version sumbitted to MobiledgeX docker registry.")] public string appVers; + /// + /// (Optional)Public key (string value) supplied by the developer for authentication + /// + [Tooltip("(Optional)Public key (string value) supplied by the developer for authentication")] public string authPublicKey; + /// + /// The Regional DME, Select the region your app is deployed in. + /// Mapped regions are the following: {EU, US,JP, Nearest} + /// + [Tooltip("The Regional DME, Select the region your app is deployed in.\nMapped regions are the following: {EU, US,JP, Nearest}")] public string region; + /// + /// Defines the log level for the SDK, set the log level to ErrorsOnly in production. + /// + [Tooltip("Defines the log level for the SDK, set the log level to ErrorsOnly in production.")] public Logger.LogType logType = Logger.LogType.ErrorsAndWarnings; } }