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(); }
static extern void GetSignals(Smoke* smoke, void* klass, AddSignal addSignalFn);
static extern void GetSignals(Smoke *smoke, void *klass, AddSignal addSignalFn);