// Start() is a time to do this, but can change if the device moves to a new location. // The return string is just an example. Your server protocol and connection strings // will determine the correct connection parameters. async Task <String> RegisterAndFindCloudlet() { // For Demo App purposes, it's the TCP app port. Your app may point somewhere else: NetTest.Site site; string aCarrierName = integration.GetCarrierName(); clog("aCarrierName: " + aCarrierName); clog("Calling DME to register client..."); bool registered = false; registered = await integration.Register(); if (!registered) { clog("Exceptions, or app not found. Not Registered!"); return(null); } else { FindCloudletReply reply; clog("Finding Cloudlet..."); reply = await integration.FindCloudlet(); // Handle reply status: bool found = false; if (reply == null) { clog("FindCloudlet call failed."); return(""); } switch (reply.status) { case FindCloudletReply.FindStatus.FIND_UNKNOWN: clog("FindCloudlet status unknown. No edge cloudlets."); break; case FindCloudletReply.FindStatus.FIND_NOTFOUND: clog("FindCloudlet Found no edge cloudlets in range."); break; case FindCloudletReply.FindStatus.FIND_FOUND: found = true; break; } if (found) { // Edge cloudlets found! clog("Edge cloudlets found!"); // Where is this app specific edge enabled cloud server: clog("GPS location: longitude: " + reply.cloudlet_location.longitude + ", latitude: " + reply.cloudlet_location.latitude); // Where is the URI for this app specific edge enabled cloud server: clog("fqdn: " + reply.fqdn); // AppPorts? clog("On ports: "); foreach (AppPort ap in reply.ports) { clog("Port: proto: " + ap.proto + ", prefix: " + ap.fqdn_prefix + ", path_prefix: " + ap.path_prefix + ", port: " + ap.public_port); // We're looking for one of the TCP app ports: if (ap.proto == LProto.L_PROTO_TCP) { // Add to test targets. if (ap.path_prefix == "") { site = new NetTest.Site { host = ap.fqdn_prefix + reply.fqdn, port = ap.public_port }; site.testType = NetTest.TestType.CONNECT; } else { site = new NetTest.Site { L7Path = ap.fqdn_prefix + reply.fqdn + ":" + ap.public_port + ap.path_prefix }; site.testType = NetTest.TestType.CONNECT; } if (useAltServer) { site.host = host; } port = site.port; l7Path = site.L7Path; site.host = "mextest-app-cluster.frankfurt-main.tdg.mobiledgex.net"; integration.netTest.sites.Enqueue(site); } } integration.netTest.doTest(true); } } // The WebSocket URI: return(host + ":" + port); }
// Start() is a time to do this, but can change if the device moves to a new location. async Task <string> RegisterAndFindCloudlet() { // For Demo App purposes, it's the TCP app port. Your app may point somewhere else: string tcpAppPort = ""; NetTest.HostAndPort hostAndPort = null; string aCarrierName = integration.GetCarrierName(); clog("aCarrierName: " + aCarrierName); clog("Calling DME to register client..."); bool registered = false; registered = await integration.Register(); if (registered) { FindCloudletReply reply; clog("Finding Cloudlet..."); reply = await integration.FindCloudlet(); // Handle reply status: bool found = false; if (reply == null) { clog("FindCloudlet call failed."); return(""); } switch (reply.status) { case FindCloudletReply.FindStatus.FIND_UNKNOWN: clog("FindCloudlet status unknown. No edge cloudlets."); break; case FindCloudletReply.FindStatus.FIND_NOTFOUND: clog("FindCloudlet Found no edge cloudlets in range."); break; case FindCloudletReply.FindStatus.FIND_FOUND: found = true; break; } if (found) { // Edge cloudlets found! clog("Edge cloudlets found!"); // Where is this app specific edge enabled cloud server: clog("GPS location: longitude: " + reply.cloudlet_location.longitude + ", latitude: " + reply.cloudlet_location.latitude); // Where is the URI for this app specific edge enabled cloud server: clog("fqdn: " + reply.fqdn); // AppPorts? Debug.Log("On ports: "); foreach (AppPort ap in reply.ports) { clog("Port: proto: " + ap.proto + ", prefix: " + ap.fqdn_prefix + ", path_prefix: " + ap.path_prefix + ", port: " + ap.public_port); // We're looking for one of the TCP app ports: if (ap.proto == LProto.L_PROTO_TCP) { tcpAppPort = reply.fqdn + ":" + ap.public_port; // FQDN prefix to append to base FQDN in FindCloudlet response. May be empty. if (ap.fqdn_prefix != "") { tcpAppPort = ap.fqdn_prefix + tcpAppPort; } // Add to test targets. hostAndPort = new NetTest.HostAndPort { host = ap.fqdn_prefix + reply.fqdn, port = ap.public_port }; netTest.sites.Enqueue(hostAndPort); } } } clog("FindCloudlet found: [" + tcpAppPort + "]"); } return(tcpAppPort); }