代码拉取完成,页面将自动刷新
package propagator
import (
"gitee.com/wujianhai/protoactor-go/actor"
)
type MiddlewarePropagator struct {
spawnMiddleware []actor.SpawnMiddleware
senderMiddleware []actor.SenderMiddleware
receiverMiddleware []actor.ReceiverMiddleware
contextDecorators []actor.ContextDecorator
}
func New() *MiddlewarePropagator {
return &MiddlewarePropagator{}
}
func (propagator *MiddlewarePropagator) WithItselfForwarded() *MiddlewarePropagator {
return propagator.WithSpawnMiddleware(propagator.SpawnMiddleware)
}
func (propagator *MiddlewarePropagator) WithSpawnMiddleware(middleware ...actor.SpawnMiddleware) *MiddlewarePropagator {
propagator.spawnMiddleware = append(propagator.spawnMiddleware, middleware...)
return propagator
}
func (propagator *MiddlewarePropagator) WithSenderMiddleware(middleware ...actor.SenderMiddleware) *MiddlewarePropagator {
propagator.senderMiddleware = append(propagator.senderMiddleware, middleware...)
return propagator
}
func (propagator *MiddlewarePropagator) WithReceiverMiddleware(middleware ...actor.ReceiverMiddleware) *MiddlewarePropagator {
propagator.receiverMiddleware = append(propagator.receiverMiddleware, middleware...)
return propagator
}
func (propagator *MiddlewarePropagator) WithContextDecorator(decorators ...actor.ContextDecorator) *MiddlewarePropagator {
propagator.contextDecorators = append(propagator.contextDecorators, decorators...)
return propagator
}
func (propagator *MiddlewarePropagator) SpawnMiddleware(next actor.SpawnFunc) actor.SpawnFunc {
return func(actorSystem *actor.ActorSystem, id string, props *actor.Props, parentContext actor.SpawnerContext) (pid *actor.PID, e error) {
if propagator.spawnMiddleware != nil {
props = props.Configure(actor.WithSpawnMiddleware(propagator.spawnMiddleware...))
}
if propagator.senderMiddleware != nil {
props = props.Configure(actor.WithSenderMiddleware(propagator.senderMiddleware...))
}
if propagator.receiverMiddleware != nil {
props = props.Configure(actor.WithReceiverMiddleware(propagator.receiverMiddleware...))
}
if propagator.contextDecorators != nil {
props = props.Configure(actor.WithContextDecorator(propagator.contextDecorators...))
}
pid, err := next(actorSystem, id, props, parentContext)
return pid, err
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。