예제 #1
0
        public static Task <HeartBeatResponseMessage> HandleMessage(IChannel channel, HeartBeatRequestMessage request)
        {
            Received(channel, request);

            POSController.ProcessHeartBeat(request.POSData.Id, channel);


            var response = new HeartBeatResponseMessage {
                Id      = request.Id,
                POSData = request.POSData,
                Result  = new Result {
                    Status = Status.Success
                }
            };

            Sending(response);
            return(Task.FromResult(response));
        }
예제 #2
0
        static async Task Main(string[] args)
        {
            var posController = new POSController();
            var txController  = new TransactionManager {
                POSController = posController
            };

            MessageHandler.POSController      = posController;
            MessageHandler.TransactionManager = txController;


            var cancellationTokenSource = new CancellationTokenSource();

            //var server = new XmlSocketServer();
            var server = new JsonSocketServer( );

            server.Bind <MessageHandler>( );
            var serverTask = server.StartAsync(9000, cancellationTokenSource.Token);


            do
            {
                Console.WriteLine("Echo Server running");
                Console.WriteLine("Press P to 'Pay' For Basket");
                Console.WriteLine("Press X to exit");

                var key = Console.ReadKey();

                switch (key.Key)
                {
                case ConsoleKey.X:
                    cancellationTokenSource.Cancel( );
                    await serverTask;
                    Console.WriteLine("Server Shutdown");
                    return;

                case ConsoleKey.P:
                    await txController.PayBasket( ).ConfigureAwait(false);

                    break;
                }
            } while (true);
        }