Esempio n. 1
0
        /// <summary>
        /// Отправить всем продюссерам
        /// </summary>
        public async Task <IList <Result <string, ErrorWrapper> > > SendAll(ResponsePieceOfDataWrapper <TIn> response, string invokerName = null)
        {
            //TODO: используя _unionOption.InterpreterTypeName интерпретировать message в этот тип и пережать как ответ.

            var message = ConvertResponse(_unionOption.ConverterName, response);
            var tasks   = _produsersDict.Values.Select(produserOwner => produserOwner.Produser.Send(message, invokerName)).ToList();
            var results = await Task.WhenAll(tasks);

            return(results);
        }
Esempio n. 2
0
        private async void TransportResponseChangeRxEventHandler(ResponsePieceOfDataWrapper <TIn> responsePieceOfDataWrapper)
        {
            var settings = new JsonSerializerSettings
            {
                Formatting        = Formatting.Indented,      //Отступы дочерних элементов
                NullValueHandling = NullValueHandling.Ignore  //Игнорировать пустые теги
            };
            var jsonResp = JsonConvert.SerializeObject(responsePieceOfDataWrapper, settings);

            //await Send2Produder(Option.TopicName4MessageBroker, $"ResponseDataWrapper = {jsonResp}");
            _logger.Debug($"TransportResponseChangeRxEventHandler.  jsonResp = {jsonResp} ");
        }
Esempio n. 3
0
        /// <summary>
        /// Отправить продюсеру по ключу
        /// </summary>
        public async Task <Result <string, ErrorWrapper> > Send(string key, ResponsePieceOfDataWrapper <TIn> response, string invokerName = null)
        {
            if (!_produsersDict.ContainsKey(key))
            {
                throw new KeyNotFoundException(key);
            }

            var message = Convert2RawJson(response);
            var result  = await _produsersDict[key].Produser.Send(message, invokerName);

            return(result);
        }
Esempio n. 4
0
        private static string ConvertResponse(string converterName, ResponsePieceOfDataWrapper <TIn> response)
        {
            object convertedResp = null;

            switch (converterName)
            {
            case "Full":
                convertedResp = response;
                break;

            case "Medium":
                convertedResp = new
                {
                    response.DeviceName,
                    response.DataAction,
                    response.ExceptionExchangePipline,
                    response.IsValidAll,
                    response.TimeAction,
                    ResponsesItems = response.ResponsesItems.Select(item => new
                    {
                        item.RequestId,
                        item.Status,
                        item.StatusStr,
                        item.TransportException,
                        item.ResponseInfo
                    }).ToList()
                };
                break;

            case "Lite":
                convertedResp = new
                {
                    response.DeviceName,
                    response.ExceptionExchangePipline,
                    response.IsValidAll,
                    response.TimeAction,
                    ResponsesItems = response.ResponsesItems.Select(item => new
                    {
                        item.RequestId,
                        item.StatusStr,
                        item.TransportException,
                        item.ResponseInfo.StronglyTypedResponse
                    }).ToList()
                };
                break;
            }

            var message = Convert2RawJson(convertedResp);

            return(message);
        }
Esempio n. 5
0
        public async Task Execute()
        {
            try
            {
                var resp = new ResponsePieceOfDataWrapper <AdInputTypeFake>()
                {
                    DataAction = DataAction.CycleAction,
                    DeviceName = "Device_1",
                    ExceptionExchangePipline = null,
                    IsValidAll  = true,
                    KeyExchange = "Exchange111",
                    TimeAction  = 2000,
                    MessageDict = new Dictionary <string, string>()
                    {
                        { "key1", "value1" },
                        { "key2", "value2" },
                        { "key3", "value3" }
                    },
                    ResponsesItems = new List <ResponseDataItem <AdInputTypeFake> >()
                    {
                        new ResponseDataItem <AdInputTypeFake>
                        {
                            RequestId    = "10",
                            ResponseInfo = new ResponseInfo
                            {
                                Encoding              = "Utf-8",
                                IsOutDataValid        = true,
                                ResponseData          = "56345653455654353453453",
                                StronglyTypedResponse = null
                            },
                            Status             = StatusDataExchange.End,
                            TransportException = null,
                            MessageDict        = null
                        }
                    }
                };

                var res = await _produsersUnion.SendAll(resp); // TODO: Задавать invokerName= deviceName
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }