예제 #1
0
        public async static Task RunClient()
        {
            using (var client = new MathCommon.MathClient("127.0.0.1:6201"))
            {
                Console.WriteLine("ready to send message");

                var random = new Random();

                AddReq req = new AddReq
                {
                    A = random.Next(1, 10000),
                    B = random.Next(1, 10000)
                };


                Console.WriteLine("call sever MathService.Add  --> {0}+{1} ", req.A, req.B);

                try
                {
                    var res = await client.AddAsync(req);

                    Console.WriteLine("server repsonse:<-----{0}+{1}={2}", req.A, req.B, res.C);
                }
                catch (Exception ex)
                {
                    Console.WriteLine("error occ {0}", ex.Message);
                }
            }
            Console.WriteLine("channel is closed!");
        }
예제 #2
0
        public override Task <AddRes> AddAsync(AddReq req)
        {
            var res = new AddRes();

            res.C = req.A + req.B;
            return(Task.FromResult(res));
        }
예제 #3
0
        public override async Task <RpcResult <AddRes> > AddAsync(AddReq req)
        {
            var inner = _proxy.GetClient <MathInnerClient>();

            var res = await inner.PlusAsync(req);

            return(res);
        }
예제 #4
0
 public static AddRes Add(AddReq req)
 {
     Log(string.Format("Add called: {0} + {1}", req.a, req.b));
     return(new AddRes()
     {
         sum = req.a + req.b
     });
 }
예제 #5
0
        public override Task <RpcResult <AddRes> > AddAsync(AddReq req)
        {
            var res = new AddRes();

            res.C = req.A + req.B;
            return(Task.FromResult(new RpcResult <AddRes>()
            {
                Data = res
            }));
        }
예제 #6
0
        public override async Task <RpcResult <AddRes> > PlusAsync(AddReq req)
        {
            //await Task.Delay(3000);

            string response = await _req.GetRequest();

            Console.WriteLine("response:{0}", response);
            var res = new AddRes();

            res.C = req.A + req.B;
            return(new RpcResult <AddRes>()
            {
                Data = res
            });
        }
예제 #7
0
        public AddRes Post([FromBody] AddReq value)
        {
            //Retorna BadRequest si la cantidad de operandos es menor a 2
            if (value.Addends.Length < 1)
            {
                //throw new HttpResponseException(HttpStatusCode.BadRequest);
            }
            AddRes result = new AddRes();

            result.Sum = 0;
            try
            {
                AddReq numbers = value;

                /*  Realiza la suma para cada uno de los numeros dentro de la peticion,
                 *  cuando el encabezado no contiene el identificador "X-Evi-Tracking-Id"
                 */
                if (String.IsNullOrEmpty(Request.Headers["X-Evi-Tracking-Id"]))
                {
                    foreach (float number in numbers.Addends)
                    {
                        result.Sum += number;
                    }
                }

                /* Si el encabezado contiene el "X-Evi-Tracking-Id" se efectua la operacion
                 * y se crea un archivo con el nombre del id del usuario y los datos de la
                 * operacion realizada
                 */
                else
                {
                    string operation = "";
                    foreach (float number in numbers.Addends)
                    {
                        result.Sum += number;
                        operation  += number + " + ";
                    }
                    LogJournal logJournal = new LogJournal(Request.Headers["X-Evi-Tracking-Id"]);
                    logJournal.Add("{" + "\"" + "Operation" + "\"" + ": " + "\"" + "Sum" + "\"" + ", " + "\"" + "Calculation" + "\"" + ": " + "\"" + operation.Substring(0, operation.Length - 3) + " = " + result.Sum + "\"" + ", " + "\"" + "Date" + "\"" + ": " + "\"" + DateTime.Now.ToString("u") + "\"" + "}");
                }
            }
            catch (Exception ex) {
                Log log = new Log();
                log.Add("Error en AddController.cs " + ex.Message);
            }

            return(result);
        }
예제 #8
0
        public async static Task RunClient()
        {
            var proxy = new ClientProxyBuilder().UseServer("127.0.0.1:6201")
                        .ConfigureServices(services =>
            {
                services.AddSingleton <IProtobufObjectFactory, ProtobufObjectFactory>();

                services.AddSingleton <IAuditLoggerFormat <AmpMessage>, AuditLoggerFormat>();
            })
                        .ConfigureLoggingServices(logger => logger.AddSerilog(dispose: true))
                        .BuildDefault();



            using (var client = proxy.GetClient <MathCommon.MathClient>())
            {
                Console.WriteLine("ready to send message");

                var random = new Random();
                var i      = 0;
                while (i < 10)
                {
                    AddReq req = new AddReq
                    {
                        A = random.Next(1, 10000),
                        B = random.Next(1, 10000)
                    };

                    Console.WriteLine("call sever MathService.Add  --> {0}+{1} ", req.A, req.B);

                    try
                    {
                        var res = await client.AddAsync(req);

                        Console.WriteLine("server repsonse:<-----{0}+{1}={2}", req.A, req.B, res.Data?.C);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine("error occ {0}", ex.Message);
                    }

                    i++;
                }
            }
            Console.WriteLine("Press any key to quit!");
            Console.ReadKey();
        }
예제 #9
0
        static void Main(string[] args)
        {
            new ClientProxyBuilder().UseServer("127.0.0.1:6201").BuildDefault();

            using (var caller = DotBPE.Rpc.Environment.ServiceProvider.GetService <ICallInvoker <AmpMessage> >())
            {
                Console.WriteLine("ready to send message");
                ushort     serviceId = 10001; // 10001 = MathService ,1 = ADd
                AmpMessage reqMsg    = AmpMessage.CreateRequestMessage(serviceId, 1);

                var    random = new Random();
                AddReq req    = new AddReq();
                req.A = random.Next(1, 10000);
                req.B = random.Next(1, 10000);
                var reqJson = Jil.JSON.Serialize(req);
                reqMsg.Data = Encoding.UTF8.GetBytes(reqJson);

                Console.WriteLine("call sever MathService.Add  --> {0}+{1} ", req.A, req.B);

                try
                {
                    var res = caller.BlockingCall(reqMsg);

                    if (res.Code == 0)
                    {
                        string jsonRes = Encoding.UTF8.GetString(res.Data);
                        var    addRes  = Jil.JSON.Deserialize <AddRes>(jsonRes);

                        Console.WriteLine("server repsonse:<-----{0}+{1}={2}", req.A, req.B, addRes.C);
                    }
                    else
                    {
                        Console.WriteLine("server error,code={0}", res.Code);
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine("error occ {0}", ex.Message);
                }
            }
            Console.WriteLine("channel is closed!");
        }
예제 #10
0
        static void Main(string[] args)
        {
            //DotBPE.Rpc.Environment.SetLogger(new DotBPE.Rpc.Logging.ConsoleLogger());

            using (var caller = new AmpCallInvoker("127.0.0.1:6201"))
            {
                Console.WriteLine("ready to send message");
                ushort     serviceId = 10002; // 10001 = MathService ,1 = ADd
                AmpMessage reqMsg    = AmpMessage.CreateRequestMessage(serviceId, 1);

                var    random = new Random();
                AddReq req    = new AddReq();
                req.A = random.Next(1, 10000);
                req.B = random.Next(1, 10000);

                reqMsg.Data = req.ToByteArray();

                Console.WriteLine("call sever MathService.Add  --> {0}+{1} ", req.A, req.B);

                try
                {
                    var res = caller.BlockingCall(reqMsg);

                    if (res.Code == 0)
                    {
                        var addRes = AddRes.Parser.ParseFrom(res.Data);

                        Console.WriteLine("server repsonse:<-----{0}+{1}={2}", req.A, req.B, addRes.C);
                    }
                    else
                    {
                        Console.WriteLine("server error,code={0}", res.Code);
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine("error occ {0}", ex.Message);
                }
            }
            Console.WriteLine("channel is closed!");
        }
예제 #11
0
        public Task <AmpMessage> AddAsync(AmpMessage reqMsg)
        {
            var rsp = AmpMessage.CreateResponseMessage(reqMsg.ServiceId, reqMsg.MessageId);

            AddReq req = MessagePackSerializer.Deserialize <AddReq>(reqMsg.Data);

            if (req != null)
            {
                var res = new AddRes();
                res.C = req.A + req.B;

                rsp.Data = MessagePackSerializer.Serialize(res);

                Logger.Debug("{0}${1}${2}  ,code=0  ,req={3}  ,res={4}", reqMsg.ServiceId, reqMsg.MessageId, reqMsg.Sequence, MessagePackSerializer.ToJson(req), MessagePackSerializer.ToJson(res));
            }
            else
            {
                rsp.Code = ErrorCodes.CODE_INTERNAL_ERROR;
                Logger.Error("{0}${1}${2}  ,code={3}  ,req={4}  ,res=null", reqMsg.ServiceId, reqMsg.MessageId, reqMsg.Sequence, rsp.Code, MessagePackSerializer.ToJson(req));
            }
            return(Task.FromResult(rsp));
        }
예제 #12
0
        public Task <AmpMessage> AddAsync(AmpMessage reqMsg)
        {
            var rsp = AmpMessage.CreateResponseMessage(reqMsg.ServiceId, reqMsg.MessageId);



            AddReq req = AddReq.Parser.ParseFrom(reqMsg.Data);

            if (req != null)
            {
                var res = new AddRes();
                res.C    = req.A + req.B;
                rsp.Data = res.ToByteArray();
                Logger.Debug("{0}${1}${2}  ,code=0  ,req={3}  ,res={4}", reqMsg.ServiceId, reqMsg.MessageId, reqMsg.Sequence, req.ToString(), res.ToString());
            }
            else
            {
                rsp.Code = ErrorCodes.CODE_INTERNAL_ERROR;
                Logger.Error("{0}${1}${2}  ,code={3}  ,req={4}  ,res=null", reqMsg.ServiceId, reqMsg.MessageId, reqMsg.Sequence, rsp.Code, req.ToString());
            }
            return(Task.FromResult(rsp));
        }
예제 #13
0
        public Task <AmpMessage> AddAsync(AmpMessage reqMsg)
        {
            var rsp = AmpMessage.CreateResponseMessage(reqMsg.ServiceId, reqMsg.MessageId);


            var    json = Encoding.UTF8.GetString(reqMsg.Data);
            AddReq req  = JSON.Deserialize <AddReq>(json);

            if (req != null)
            {
                var res = new AddRes();
                res.C = req.A + req.B;
                var resJson = JSON.Serialize(res);
                rsp.Data = Encoding.UTF8.GetBytes(resJson);
                Logger.Debug("{0}${1}${2}  ,code=0  ,req={3}  ,res={4}", reqMsg.ServiceId, reqMsg.MessageId, reqMsg.Sequence, json, resJson);
            }
            else
            {
                rsp.Code = ErrorCodes.CODE_INTERNAL_ERROR;
                Logger.Error("{0}${1}${2}  ,code={3}  ,req={4}  ,res=null", reqMsg.ServiceId, reqMsg.MessageId, reqMsg.Sequence, rsp.Code, json);
            }
            return(Task.FromResult(rsp));
        }
예제 #14
0
 public void SendAddReq(AddReq addReq)
 {
     byte[] b = new byte[addReq.Size()];
     addReq.Marshal(b, 0);
     client.Send((byte)ServiceID.ServiceID_Module1, (byte)MessageID.MsgID_Add, b);
 }