Пример #1
0
        public DeployService(ServerContent server)
        {
            this.server = server;

            appName    = MposFramework.Instance.DeviceController.AppName;
            appVersion = MposFramework.Instance.DeviceController.Version;
        }
Пример #2
0
        public DiscoveryService(ServerContent server)
        {
            this.server = server;

            servicePort = 30015;
            appName     = MposFramework.Instance.DeviceController.AppName;
            appVersion  = MposFramework.Instance.DeviceController.Version;
        }
Пример #3
0
		public DiscoveryService(ServerContent server)
		{
			this.server = server;

			servicePort = 30015;
			appName = MposFramework.Instance.DeviceController.AppName;
			appVersion = MposFramework.Instance.DeviceController.Version;
		}
Пример #4
0
        public ProfileNetworkTask(ServerContent server, string startMessage)
        {
            this.server       = server;
            this.startMessage = startMessage;

            network  = new Network();
            watch    = new Stopwatch();
            hostName = new HostName(server.Ip.ToString());
        }
Пример #5
0
        private object InvokeRemotable(ServerContent server, bool needProfile, MethodInfo method, object[] methodParams)
        {
            rpc.SetupServer(server);
            object returnMethod = rpc.Call(needProfile, manualSerialization, objOriginal, method.Name, methodParams);

            if (needProfile)
            {
                var profile = rpc.Profile;
                //Debug.WriteLine("[DEBUG]: Results -> " + profile.ToString());
                EndpointController.rpcProfile = profile;
            }

            if (returnMethod != null)
            {
                return(returnMethod);
            }
            else
            {
                throw new RpcException("Method (failed): " + method.Name + ", return 'null' value from remotable method");
            }
        }
Пример #6
0
        private void ExecutionCompleted(Network network)
        {
            if (network != null)
            {
                network.GeneratingPingTcpStats();
                Debug.WriteLine("[DecisionMaker]:  -> Ping max: " + network.PingMaxTCP + ", med: " + network.PingMedTCP + ", min: " + network.PingMinTCP);

                MposFramework.Instance.EndpointController.RemoteAdvantage = network.PingMedTCP < PingTolerance;

                //List<Network> lists = profileDao.Last15Results();
                //System.Diagnostics.Debug.WriteLine("[DEBUG]: Network Results!!!");
                //foreach (Network net in lists)
                //{
                //	System.Diagnostics.Debug.WriteLine(net);
                //}
            }
            else
            {
                Server = null;
                MposFramework.Instance.EndpointController.RemoteAdvantage = false;
                Debug.WriteLine("[DecisionMaker]: Any problem in ping test!");
            }
        }
Пример #7
0
        public void NetworkAnalysis(ServerContent server, ProfileNetwork profile)
        {
            if (server == null)
            {
                throw new NetworkException("The remote service isn't ready for profile network");
            }

            if (profile == ProfileNetwork.LIGHT)
            {
                taskNetwork = new ProfileNetworkLight(server);
            }
            else if (profile == ProfileNetwork.DEFAULT)
            {
                taskNetwork = new ProfileNetworkDefault(server);
            }
            else if (profile == ProfileNetwork.FULL)
            {
                taskNetwork = new ProfileNetworkFull(server);
            }

            EventIntercept();

            taskNetwork.Execute();
        }
Пример #8
0
 public void NetworkAnalysis(ServerContent server)
 {
     NetworkAnalysis(server, profileNetwork);
 }
Пример #9
0
 public void SetupServer(ServerContent server)
 {
     this.server = server;
 }
Пример #10
0
 public RpcClient()
 {
     profile     = new RpcProfile();
     this.server = null;
 }
Пример #11
0
        private byte[] data;        //used on uploading...

        public ProfileNetworkFull(ServerContent server) : base(server, "ProfileFull Started on endpoint: " + server.Ip)
        {
            data = new byte[32 * 1024];
            new Random().NextBytes(data);
        }
Пример #12
0
 public DynamicDecisionSystem(ServerContent server)
 {
     Server     = server;
     profileDao = new ProfileNetworkDao();
 }
Пример #13
0
 public ProfileNetworkLight(ServerContent server) : base(server, "ProfileLight Started on endpoint: " + server.Ip)
 {
 }
        public void AddContent(string path, string content)
        {
            var contentDto = new ServerContent(path, content);

            _content[contentDto.Path] = contentDto;
        }
Пример #15
0
 public ProfileNetworkDefault(ServerContent server) : base(server, "ProfileDefault Started on endpoint: " + server.Ip)
 {
 }
Пример #16
0
        public object Invoke(object original, MethodInfo method, object[] methodAttributes, object[] methodParams)
        {
            foreach (object remotableAttribute in methodAttributes)
            {
                if (remotableAttribute is Remotable)
                {
                    //Debug.WriteLine(">> ProxyHandler '" + proxy.GetType().Name + "' call Remotable method: " + method + " with params: " + methodParams);

                    Remotable remotable = remotableAttribute as Remotable;

                    ServerContent server = MposFramework.Instance.EndpointController.SelectPriorityServer(remotable.CloudletPriority);
                    if (remotable.Type == Offload.STATIC)
                    {
                        if (server != null)
                        {
                            try
                            {
                                return(InvokeRemotable(server, remotable.Status, method, methodParams));
                            }
                            catch (ConnectException e)
                            {
                                Debug.WriteLine("[DEBUG]: " + e.Message);
                                MposFramework.Instance.EndpointController.RediscoveryServices(server);
                            }
                            catch (Exception e)
                            {
                                Debug.WriteLine("[DEBUG]: " + e.Message);
                            }
                        }
                    }
                    else
                    {
                        try
                        {
                            if (server != null)
                            {
                                MposFramework.Instance.EndpointController.UpdateDynamicDecisionSystemEndpoint(server);
                                if (MposFramework.Instance.EndpointController.RemoteAdvantage)
                                {
                                    return(InvokeRemotable(server, remotable.Status, method, methodParams));
                                }
                            }
                        }
                        catch (ConnectException e)
                        {
                            Debug.WriteLine("[DEBUG]: " + e.Message);
                            MposFramework.Instance.EndpointController.RediscoveryServices(server);

                            //cloudlet fails try using the internet service
                            if (server.Type == EndpointType.CLOUDLET)
                            {
                                try
                                {
                                    //NOTICE: only on real device, can check connection, however use this line
                                    //server = MposFramework.Instance.EndpointController.InternetServer;
                                    server = MposFramework.Instance.EndpointController.CheckSecondaryServer();
                                    if (server != null)
                                    {
                                        return(InvokeRemotable(server, remotable.Status, method, methodParams));
                                    }
                                }
                                catch (ConnectException eIntern)
                                {
                                    Debug.WriteLine("[DEBUG]: Inner try -> " + eIntern.Message);
                                    MposFramework.Instance.EndpointController.RediscoveryServices(server);
                                }
                                catch (Exception eIntern)
                                {
                                    Debug.WriteLine("[DEBUG]: Inner try -> " + eIntern.Message);
                                }
                            }
                        }
                        catch (Exception e)
                        {
                            Debug.WriteLine("[DEBUG]: " + e.Message);
                        }
                    }

                    if (remotable.Status)
                    {
                        watch.Reset();
                        watch.Start();
                        object objReturn = method.Invoke(objOriginal, methodParams);
                        watch.Stop();

                        EndpointController.rpcProfile.ExecutionCpuTime = watch.ElapsedMilliseconds;
                        //Debug.WriteLine("[DEBUG]: Results -> " + EndpointController.rpcProfile.ToString());
                        return(objReturn);
                    }
                }
            }

            //Debug.WriteLine("#> ProxyHandler '" + proxy.GetType().Name + "' call Local method: " + method + " with params: " + methodParams);
            return(method.Invoke(objOriginal, methodParams));
        }