예제 #1
0
        // 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);
        }
예제 #2
0
        // 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);
        }