Example #1
0
        static void SimulateSales(string country, string product)
        {
            using (GatewayWebSocketClient websocketClient = new GatewayWebSocketClient())
            {
                websocketClient.ConnectAsync("ws://localhost:31024/SalesServiceWS/").Wait();
                PostSalesModel postSalesModel = new PostSalesModel
                {
                    Product = product,
                    Country = country
                };

                IWsSerializer serializer = SerializerFactory.CreateSerializer();
                byte[]        payload    = serializer.SerializeAsync(postSalesModel).Result;

                WsRequestMessage mreq = new WsRequestMessage
                {
                    Operation = "sell",
                    Value     = payload
                };

                WsResponseMessage mresp = websocketClient.SendReceiveAsync(mreq, CancellationToken.None).Result;
                if (mresp.Result == WsResult.Error)
                {
                    Console.WriteLine("Error: {0}", Encoding.UTF8.GetString(mresp.Value));
                }
            }
        }
Example #2
0
        public async Task <byte[]> ProcessWsMessageAsync(byte[] wsrequest, CancellationToken cancellationToken)
        {
            ProtobufWsSerializer mserializer = new ProtobufWsSerializer();

            WsRequestMessage mrequest = await mserializer.DeserializeAsync <WsRequestMessage>(wsrequest);

            switch (mrequest.Operation)
            {
            case "sell":
            {
                IWsSerializer  pserializer = SerializerFactory.CreateSerializer();
                PostSalesModel payload     = await pserializer.DeserializeAsync <PostSalesModel>(mrequest.Value);

                //await this.PurchaseProduct(payload.ProductId, payload.Quantity);
                var id        = payload.Country + "-" + payload.Product;
                var candidate = ActorProxy.Create <IProductActor>(new ActorId(id), "fabric:/ECommerceApplication");
                await candidate.SellAsync();
            }
            break;
            }

            WsResponseMessage mresponse = new WsResponseMessage
            {
                Result = WsResult.Success
            };

            return(await mserializer.SerializeAsync(mresponse));
        }