Exemple #1
0
        public void Run()
        {
            Console.WriteLine("type host");
            string host = Console.ReadLine();

            TcpChannel m_TcpChan = new TcpChannel(0);

            ChannelServices.RegisterChannel(m_TcpChan, false);

            // Create the object for calling into the server
            ICallsToServer m_RemoteObject = (ICallsToServer)
                                            Activator.GetObject(typeof(ICallsToServer),
                                                                $"tcp://{host}:123/RemoteServer");

            // Define sink for events
            RemotingConfiguration.RegisterWellKnownServiceType(
                typeof(NotifySink),
                "ServerEvents",
                WellKnownObjectMode.Singleton);
            NotifySink sink = new NotifySink();

            // Assign the callback from the server to here
            var(id, name, timespan, accountId) = GetPrivateVariablesValues();
            m_RemoteObject.Notify += new NotifyCallback(sink.FireNotifyCallback);



            m_RemoteObject.CreateNewAccount(id, name, accountId);



            Console.WriteLine(" type 'w 1' for withdraw 1 amount to account");
            Console.WriteLine(" type 'd 1' for deposit 1 amount to account");

            while (!_stop)
            {
                var result      = Console.ReadLine();
                var parametres  = result.Split(' ');
                var createdDate = DateTime.Now.Ticks;
                switch (parametres[0])
                {
                case "w":
                    Task.Delay(timespan).ContinueWith(x => m_RemoteObject.Withdraw(id, accountId, createdDate, Int32.Parse(parametres[1])));
                    break;

                case "d":
                    Task.Delay(timespan).ContinueWith(x => m_RemoteObject.Deposit(id, accountId, createdDate, Int32.Parse(parametres[1])));
                    break;
                }
            }
        }
Exemple #2
0
 private void GetTasks(string id, ICallsToServer m_RemoteObject)
 {
     while (true)
     {
         Task.Delay(5000);
         var tasksFromServer = m_RemoteObject.GetTasks(id);
         var addedTasks      = tasksFromServer.Where(x => !tasks.Any(y => y == x)).ToList();
         tasks.AddRange(addedTasks);
         OutputList("added tasks", addedTasks);
         var deletedTasks = tasks.Where(x => !tasksFromServer.Any(y => y == x)).ToList();
         for (var i = 0; i < deletedTasks.Count; i++)
         {
             tasks.Remove(deletedTasks[i]);
         }
         OutputList("deleted tasks", deletedTasks);
     }
 }
Exemple #3
0
        private ICallsToServer GetServerInstance()
        {
            tasks = new List <string>();
            Console.WriteLine("type host");
            string host = Console.ReadLine();

            TcpChannel m_TcpChan = new TcpChannel(0);

            ChannelServices.RegisterChannel(m_TcpChan, false);

            // Create the object for calling into the server
            ICallsToServer m_RemoteObject = (ICallsToServer)
                                            Activator.GetObject(typeof(ICallsToServer),
                                                                $"tcp://{host}:123/RemoteServer");

            return(m_RemoteObject);
        }
Exemple #4
0
        static void Main(string[] args)
        {
            // Sleep for a moment to let the sewrver start
            System.Threading.Thread.Sleep(2000);

            // Use a defined port to receive callbacks or 0 to receive available port
            TcpChannel m_TcpChan = new TcpChannel(0);

            ChannelServices.RegisterChannel(m_TcpChan, false);

            // Create the object for calling into the server
            ICallsToServer m_RemoteObject = (ICallsToServer)
                                            Activator.GetObject(typeof(ICallsToServer),
                                                                "tcp://127.0.0.1:8392/RemoteServer"); //  Must match IP and port on server

            // Define sink for events
            RemotingConfiguration.RegisterWellKnownServiceType(
                typeof(NotifySink),
                "ServerEvents",
                WellKnownObjectMode.Singleton);
            NotifySink sink = new NotifySink();

            // Assign the callback from the server to here
            m_RemoteObject.Notify += new NotifyCallback(sink.FireNotifyCallback);

            // Keep calling till the server is gone (This is not necessary)
            Console.WriteLine("Client is now ready to send and receive data...");
            int n = 1;

            while (true)
            {
                try
                {
                    m_RemoteObject.SomeSimpleFunction(n++);
                    System.Threading.Thread.Sleep(1000);
                }
                catch
                {
                    Console.WriteLine("Server is not responding. Go home.");
                    return;
                }
            }
        }
Exemple #5
0
        private void GetTasks(string id, ICallsToServer mRemoteObject)
        {
            while (true)
            {
                Task.Delay(PollDelay);

                var tasksFromServer = mRemoteObject.GetTasks(id);
                var addedTasks      = tasksFromServer.Except(_tasks).ToList();
                _tasks.AddRange(addedTasks);

                OutputList("added tasks", addedTasks);
                var deletedTasks = _tasks.Except(tasksFromServer).ToList();
                foreach (var task in deletedTasks)
                {
                    _tasks.Remove(task);
                }

                OutputList("deleted tasks", deletedTasks);
            }
        }