public async Task <ProcessingResponse> ProcessRequest(RequestData requestData)
        {
            var builderDirector = Shell.CreateBuilderDirector(
                XmlConfigCreator.TransformConfigToXDocument(requestData.ConfigurationXml)
                );
            var shell = builderDirector.MakeShell();

            var inputTransmitter = new InputTransmitter(requestData.ThingNames);

            shell.InputManager.Add(inputTransmitter);

            var outputTransmitter = new OutputTransmitter();

            shell.OutputManager.Add(outputTransmitter);

            ServiceStatus status = await Task.Run(() => shell.Run("Processing response"));

            var results = outputTransmitter.GetResults();

            var response = new ProcessingResponse
            {
                Metadata = new ResponseMetadata
                {
                    CommonResultsNumber           = results.Sum(rating => rating.Count),
                    CommonResultCollectionsNumber = results.Count,
                    ResultStatus = status,
                    OptionalData = CreateOptionalData()
                },
                RatingDataContainers = results
            };

            return(response);
        }
Пример #2
0
    public static void DeattachInputTransmitter(this IInputReceiver r, InputTransmitter t)
    {
        if (r.AttachedInputTransmitterList == null)
        {
            return;
        }

        r.AttachedInputTransmitterList.Remove(t);

        t.Dispose();
    }
Пример #3
0
    public static void AttachInputTransmitter(this IInputReceiver r, InputTransmitter t)
    {
        if (r.AttachedInputTransmitterList == null)
        {
            r.AttachedInputTransmitterList = new List <InputTransmitter>();
        }

        if (r.AttachedInputTransmitterList.Contains(t))
        {
            return;
        }

        r.AttachedInputTransmitterList.Add(t);
    }
Пример #4
0
    void InitReceiverDict()
    {
        _receiverDict = new Dictionary <IInputReceiver, T>();

        List <IInputReceiver> irList = GetComponents <IInputReceiver>().ToList();

        foreach (IInputReceiver ir in irList)
        {
            T transmitter = InputTransmitter.AttachInputTransmitter <T>(ir);

            if (transmitter == null)
            {
                return;
            }

            transmitter.SetTransmissionEnabled(true, false);

            _receiverDict.Add(ir, transmitter);
        }
    }