Exemplo n.º 1
0
        /// <summary>
        /// Called when a control message LogMessage is received.
        /// </summary>
        /// <param name="ctrlLink">The link that received this message.</param>
        /// <param name="msg">The message itself.</param>
        public override void ReceiveMessage(CtrlLink ctrlLink, Protocol.Auto.Ctrl.LogMessage msg)
        {
            // Don't care about error code; log messages are just updates with no code set
            if (!msg.hasLogMessage())
            {
                return;
            }

            if (msg.getLogMessage().getType() == Pravala.Protocol.Auto.Log.LogType.TextMessage)
            {
                Pravala.Protocol.Auto.Log.TextMessage textMsg = new Pravala.Protocol.Auto.Log.TextMessage();

                if (textMsg.DeserializeFromBaseMessage(msg.getLogMessage()))
                {
                    BindableTextMessage bindableMessage = new BindableTextMessage(textMsg);
                    ServiceProvider.OutputFile.Write(bindableMessage.ToString());

                    ServiceProvider.ViewModel.PostToUiThread(
                        o =>
                    {
                        ServiceProvider.ViewModel.AddMessage(bindableMessage);
                    },
                        this);
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Called whenever a base message is received.
        /// </summary>
        /// <param name="ctrlLink">The link over which the message was received.</param>
        /// <param name="baseMsg">The message received.</param>
        public void ReceiveBaseMessage(CtrlLink ctrlLink, Protocol.Auto.Ctrl.Message baseMsg)
        {
            T msg = new T();

            msg.DeserializeFromBaseMessage(baseMsg);
            this.ReceiveMessage(ctrlLink, msg);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Unsubscribes from updates.
        /// </summary>
        /// <param name="ctrlLink">CtrlLink to send the unsubscribe on.</param>
        /// <returns>Task for async use.</returns>
        public override async Task UnsubscribeAsync(CtrlLink ctrlLink)
        {
            LogUnsubscribe infoSubMsg = new LogUnsubscribe();

            infoSubMsg.setNamePattern("*");
            await ctrlLink.SendMessageAsync(infoSubMsg);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Subscribes for updates.
        /// </summary>
        /// <param name="ctrlLink">CtrlLink to send the subscribe on.</param>
        /// <returns>Task for async use.</returns>
        public override async Task SubscribeAsync(CtrlLink ctrlLink)
        {
            // Split log pattern into pairs
            string[] logDescriptions = this.pattern.Split(' ');

            // Send a subscribe message for each pair
            foreach (string logDescription in logDescriptions)
            {
                string[] logParts = logDescription.Split('.');

                if (logParts.Length != 2)
                {
                    continue;
                }

                string   name  = logParts[0];
                LogLevel level = this.LevelStringToEnum(logParts[1]);

                if (level != LogLevel.Invalid)
                {
                    ServiceProvider.OutputFile.WriteMessageLine("Subscribe for " + name + "." + level.ToString());
                    LogSubscribe infoSubMsg = new LogSubscribe();
                    infoSubMsg.setNamePattern(name);
                    infoSubMsg.setLevel(level);
                    await ctrlLink.SendMessageAsync(infoSubMsg);
                }
            }
        }
Exemplo n.º 5
0
 /// <summary>
 /// Unsubscribes from updates.
 /// </summary>
 /// <param name="ctrlLink">CtrlLink to send the unsubscribe on.</param>
 /// <returns>Task for async use.</returns>
 public abstract Task UnsubscribeAsync(CtrlLink ctrlLink);
Exemplo n.º 6
0
 /// <summary>
 /// Called whenever a message is received.
 /// </summary>
 /// <param name="ctrlLink">The link over which the message was received.</param>
 /// <param name="msg">The message received.</param>
 public abstract void ReceiveMessage(CtrlLink ctrlLink, T msg);