示例#1
0
        private void HandleAddSignal(AddSignal message)
        {
            if (signalActors.ContainsKey(message.Signal.ChannelId))
            {
                throw new ArgumentException($"信号已存在{message.Signal.ChannelId}");
            }

            IActorRef actor = CreateSignalActor(message.Signal);

            if (actor != ActorRefs.Nobody)
            {
                signalActors.Add(message.Signal.ChannelId, actor);
            }
        }
        private void SignalListChanged(object sender, ListChangedEventArgs e)
        {
            // this hook is called AFTER midification of this.m_signals
            // here only create Command to keep Command trace uptodate

            if (GenerateCommandsForChanges)
            {
                switch (e.ListChangedType)
                {
                case ListChangedType.ItemAdded:
                {
                    AddSignal addCmd = new AddSignal(m_signals[e.NewIndex]);
                    // no executtion, only update trace
                    addCmd.Execute = false;
                    Commands.CommandExecuter.Instance.Execute(addCmd);
                    break;
                }

                case ListChangedType.ItemChanged:
                {
                    ModifiySignal modCmd = new ModifiySignal(m_signals[e.NewIndex]);
                    modCmd.CurrentSignalName = m_signalNamesPriorToModification[e.NewIndex];
                    // no executtion, only update trace
                    modCmd.Execute = false;
                    Commands.CommandExecuter.Instance.Execute(modCmd);
                    break;
                }

                case ListChangedType.ItemDeleted:
                {
                    DeleteSignal delCmd = new DeleteSignal();
                    delCmd.SignalName = m_signalNamesPriorToModification[e.NewIndex];
                    // no execution, only update trace
                    delCmd.Execute = false;
                    Commands.CommandExecuter.Instance.Execute(delCmd);

                    break;
                }

                default:
                {
                    break;
                }
                }
            }

            CopySignalList();
        }
示例#3
0
 static extern void GetSignals(Smoke* smoke, void* klass, AddSignal addSignalFn);
示例#4
0
 static extern void GetSignals(Smoke *smoke, void *klass, AddSignal addSignalFn);