switch.go
func (sw *Switch) AddReactor(name string, reactor Reactor) Reactor {
	// Validate the reactor.
	// No two reactors can share the same channel.
	reactorChannels := reactor.GetChannels()
	for _, chDesc := range reactorChannels {
		chID := chDesc.ID
		if sw.reactorsByCh[chID] != nil {
			PanicSanity(fmt.Sprintf("Channel %X has multiple reactors %v & %v", chID, sw.reactorsByCh[chID], reactor))
		}
		sw.chDescs = append(sw.chDescs, chDesc)
		sw.reactorsByCh[chID] = reactor
	}
	sw.reactors[name] = reactor
	reactor.SetSwitch(sw)
	return reactor
}
func (sw *Switch) AddReactor(name string, reactor Reactor) Reactor {
	// Validate the reactor.
	// No two reactors can share the same channel.
	reactorChannels := reactor.GetChannels()
	for _, chDesc := range reactorChannels {
		chID := chDesc.ID
		if sw.reactorsByCh[chID] != nil {
			PanicSanity(fmt.Sprintf("Channel %X has multiple reactors %v & %v", chID, sw.reactorsByCh[chID], reactor))
		}
		sw.chDescs = append(sw.chDescs, chDesc)
		sw.reactorsByCh[chID] = reactor
	}
	sw.reactors[name] = reactor
	reactor.SetSwitch(sw)
	return reactor
}
func ( sw * Switch ) AddReactor ( name string , reactor Reactor ) Reactor { // Validate the reactor. // No two reactors can share the same channel. reactorChannels := reactor . GetChannels ( ) for _ , chDesc := range reactorChannels { chID := chDesc . ID if sw . reactorsByCh [ chID ] != nil { PanicSanity ( fmt . Sprintf ( " " , chID , sw . reactorsByCh [ chID ] , reactor ) ) } sw . chDescs = append ( sw . chDescs , chDesc ) sw . reactorsByCh [ chID ] = reactor } sw . reactors [ name ] = reactor reactor . SetSwitch ( sw ) return reactor }
// Not goroutine safe.
Not goroutine safe .