예제 #1
0
        public static HTTPRequest_RetailerToClientGateway AttemptToViewProducts(HTTPRequest_ClientToGateway request)
        {
            Cookie userCookie = request.Cookie;

            Console.WriteLine("Checkin if user string is valid, info received - USERACCOUNTSTRING: " + userCookie.CurrentCookieString);
            //Todo: remember to verify password and not just username.
            HTTPRequest_RetailerToClientGateway response = new HTTPRequest_RetailerToClientGateway();

            response.Cookie = userCookie;
            if (_RequiresLogin == false || Cookie.ServerCheckIsValidUserString(userCookie.CurrentCookieString)) //If doesn't require login or login is verifiable.
            {
                Console.WriteLine("Valid user account string, responding with product list.");
                #region Construct response with list of products.
                //Get product list from warehouse
                HTTPRequest_RetailToWarehouse requestToForward = new HTTPRequest_RetailToWarehouse();
                requestToForward.WarehouseCmd = HTTPRequest_RetailToWarehouse.WarehouseCommand.ViewProducts;
                RetailToWarehouseCtrl_TopicBased rtwhctrl        = new RetailToWarehouseCtrl_TopicBased();
                HTTPRequest_WarehouseToRetail    wrhouseResponse = rtwhctrl.PublishToWarehouse(request.Location, requestToForward, RetailToWarehouseCtrl_TopicBased.WhichWarehouses.All);
                //rtwhctrl.SubscribeToWarehouse(request.Location, requestToForward, RetailToWarehouseCtrl_TopicBased.WhichWarehouses.All);
                response.Products = wrhouseResponse.Products;
                //response.Products = getTestProductList();
                #endregion
                return(response);
            }
            else
            {
                Console.WriteLine("User account string could not be verified.");
                return(response);
            }
        }
        void HandleResponse(HTTPRequest_RetailToWarehouse request)
        {
            Console.WriteLine("Received command: " + request.WarehouseCmd);
            HTTPRequest_WarehouseToRetail response = new HTTPRequest_WarehouseToRetail();

            response.WarehouseCmd = request.WarehouseCmd;
            switch (request.WarehouseCmd)
            {
            case HTTPRequest_RetailToWarehouse.WarehouseCommand.ViewProducts:
                response.Products = products;
                ware_Publisher.Publish(id, topic, response);
                break;

            case HTTPRequest_RetailToWarehouse.WarehouseCommand.PurchaseProducts:
                break;

            default:
                break;
            }
            //Console.ForegroundColor = ConsoleColor.Red;
            //Console.WriteLine("Got message: {0}", product.ID);
            //Console.WriteLine(product.Name);
            //Console.WriteLine(product.Description);
            //Console.WriteLine(product.Quantity);
            //Console.WriteLine();
            //Console.ResetColor();
        }
        public HTTPRequest_WarehouseToRetail PublishToWarehouse(Location location, HTTPRequest_RetailToWarehouse request, WhichWarehouses whichWarehouses = WhichWarehouses.All)
        {
            string topic = GetTopic(location, whichWarehouses);

            using (bus)
            {
                Console.WriteLine("Publishing with topic: " + topic);
                //var message = new TextMessage { Text = topic };
                bus.Publish <HTTPRequest_RetailToWarehouse>(request, topic);

                Console.WriteLine("Subscribing to topic: " + topic);
                bus.Subscribe <HTTPRequest_WarehouseToRetail>("subscriber" + id, HandleResponse, x => x.WithTopic(topic));
                Console.WriteLine("Listening for messages.");

                lock (this)
                {
                    gotReply = Monitor.Wait(this, 3000);
                }

                if (gotReply)
                {
                    return(toReturn);
                }
                else
                {
                    return(new HTTPRequest_WarehouseToRetail());
                }
            }
        }