本文整理汇总了C#中Props.WithRouter方法的典型用法代码示例。如果您正苦于以下问题:C# Props.WithRouter方法的具体用法?C# Props.WithRouter怎么用?C# Props.WithRouter使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Props
的用法示例。
在下文中一共展示了Props.WithRouter方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ActorOf
public IInternalActorRef ActorOf(ActorSystemImpl system, Props props, IInternalActorRef supervisor, ActorPath path, bool systemService, Deploy deploy, bool lookupDeploy, bool async)
{
if (props.Deploy.RouterConfig.NoRouter())
{
if (Settings.DebugRouterMisconfiguration)
{
var d = Deployer.Lookup(path);
if (d != null && d.RouterConfig != RouterConfig.NoRouter)
Log.Warning("Configuration says that [{0}] should be a router, but code disagrees. Remove the config or add a RouterConfig to its Props.",
path);
}
var props2 = props;
// mailbox and dispatcher defined in deploy should override props
var propsDeploy = lookupDeploy ? Deployer.Lookup(path) : deploy;
if (propsDeploy != null)
{
if (propsDeploy.Mailbox != Deploy.NoMailboxGiven)
props2 = props2.WithMailbox(propsDeploy.Mailbox);
if (propsDeploy.Dispatcher != Deploy.NoDispatcherGiven)
props2 = props2.WithDispatcher(propsDeploy.Dispatcher);
}
if (!system.Dispatchers.HasDispatcher(props2.Dispatcher))
{
throw new ConfigurationException(string.Format("Dispatcher [{0}] not configured for path {1}", props2.Dispatcher, path));
}
try
{
// for consistency we check configuration of dispatcher and mailbox locally
var dispatcher = _system.Dispatchers.Lookup(props2.Dispatcher);
if (async)
return
new RepointableActorRef(system, props2, dispatcher,
() => _system.Mailboxes.CreateMailbox(props2, dispatcher.Configurator.Config), supervisor,
path).Initialize(async);
return new LocalActorRef(system, props2, dispatcher,
() => _system.Mailboxes.CreateMailbox(props2, dispatcher.Configurator.Config), supervisor, path);
}
catch (Exception ex)
{
throw new ConfigurationException(
string.Format(
"Configuration problem while creating {0} with dispatcher [{1}] and mailbox [{2}]", path,
props.Dispatcher, props.Mailbox), ex);
}
}
else //routers!!!
{
var lookup = (lookupDeploy ? Deployer.Lookup(path) : null) ?? Deploy.None;
var fromProps = new List<Deploy>() { props.Deploy, deploy, lookup };
var d = fromProps.Where(x => x != null).Aggregate((deploy1, deploy2) => deploy2.WithFallback(deploy1));
var p = props.WithRouter(d.RouterConfig);
if (!system.Dispatchers.HasDispatcher(p.Dispatcher))
throw new ConfigurationException(string.Format("Dispatcher [{0}] not configured for routees of path {1}", p.Dispatcher, path));
if (!system.Dispatchers.HasDispatcher(d.RouterConfig.RouterDispatcher))
throw new ConfigurationException(string.Format("Dispatcher [{0}] not configured for router of path {1}", p.RouterConfig.RouterDispatcher, path));
var routerProps = Props.Empty.WithRouter(p.Deploy.RouterConfig).WithDispatcher(p.RouterConfig.RouterDispatcher);
var routeeProps = props.WithRouter(RouterConfig.NoRouter);
try
{
var routerDispatcher = system.Dispatchers.Lookup(p.RouterConfig.RouterDispatcher);
var routerMailbox = system.Mailboxes.CreateMailbox(routerProps, routerDispatcher.Configurator.Config);
// routers use context.actorOf() to create the routees, which does not allow us to pass
// these through, but obtain them here for early verification
var routeeDispatcher = system.Dispatchers.Lookup(p.Dispatcher);
var routedActorRef = new RoutedActorRef(system, routerProps, routerDispatcher, () => routerMailbox, routeeProps,
supervisor, path);
routedActorRef.Initialize(async);
return routedActorRef;
}
catch (Exception)
{
throw new ConfigurationException(string.Format("Configuration problem while creating [{0}] with router dispatcher [{1}] and mailbox {2}" +
" and routee dispatcher [{3}] and mailbox [{4}].", path, routerProps.Dispatcher, routerProps.Mailbox,
routeeProps.Dispatcher, routeeProps.Mailbox));
}
}
}
示例2: ActorOf
/// <summary>
/// Actors the of.
/// </summary>
/// <param name="system">The system.</param>
/// <param name="props">The props.</param>
/// <param name="supervisor">The supervisor.</param>
/// <param name="path">The path.</param>
/// <returns>InternalActorRef.</returns>
public override InternalActorRef ActorOf(ActorSystem system, Props props, InternalActorRef supervisor,
ActorPath path)
{
ActorCell cell = null;
Mailbox mailbox = System.Mailboxes.FromConfig(props.Mailbox);
Deploy configDeploy = System.Provider.Deployer.Lookup(path);
var deploy = configDeploy ?? props.Deploy ?? Deploy.None;
if (deploy.Mailbox != null)
props = props.WithMailbox(deploy.Mailbox);
if (deploy.Dispatcher != null)
props = props.WithDispatcher(deploy.Dispatcher);
if (deploy.Scope is RemoteScope)
{
}
if (string.IsNullOrEmpty(props.Mailbox))
{
// throw new NotSupportedException("Mailbox can not be configured as null or empty");
}
if (string.IsNullOrEmpty(props.Dispatcher))
{
//TODO: fix this..
// throw new NotSupportedException("Dispatcher can not be configured as null or empty");
}
if (props.Deploy != null && props.Deploy.Scope is RemoteScope)
{
throw new NotSupportedException("LocalActorRefProvider can not deploy remote");
}
if (props.RouterConfig is NoRouter || props.RouterConfig == null)
{
props = props.WithDeploy(deploy);
cell = new ActorCell(system, supervisor, props, path, mailbox);
}
else
{
//if no Router config value was specified, override with procedural input
if (deploy.RouterConfig is NoRouter)
{
deploy = deploy.WithRouterConfig(props.RouterConfig);
}
var routerProps =
Props.Create<RouterActor>()
.WithDeploy(deploy);
var routeeProps = props.WithRouter(RouterConfig.NoRouter);
cell = new RoutedActorCell(system, supervisor, routerProps, routeeProps, path, mailbox);
}
cell.NewActor();
// parentContext.Watch(cell.Self);
return cell.Self;
}
示例3: ActorOf
public InternalActorRef ActorOf(ActorSystem system, Props props, InternalActorRef supervisor, ActorPath path, bool systemService, Deploy deploy, bool lookupDeploy, bool async)
{
//TODO: This does not match Akka's ActorOf at all
Deploy configDeploy = _system.Provider.Deployer.Lookup(path);
deploy = configDeploy ?? props.Deploy ?? Deploy.None;
if(deploy.Mailbox != null)
props = props.WithMailbox(deploy.Mailbox);
if(deploy.Dispatcher != null)
props = props.WithDispatcher(deploy.Dispatcher);
if(deploy.Scope is RemoteScope)
{
}
if(string.IsNullOrEmpty(props.Mailbox))
{
// throw new NotSupportedException("Mailbox can not be configured as null or empty");
}
if(string.IsNullOrEmpty(props.Dispatcher))
{
//TODO: fix this..
// throw new NotSupportedException("Dispatcher can not be configured as null or empty");
}
//TODO: how should this be dealt with?
//akka simply passes the "deploy" var from remote daemon to ActorOf
//so it atleast seems like they ignore if remote scope is provided here.
//leaving this for now since it does work
//if (props.Deploy != null && props.Deploy.Scope is RemoteScope)
//{
// throw new NotSupportedException("LocalActorRefProvider can not deploy remote");
//}
if(props.RouterConfig is NoRouter || props.RouterConfig == null)
{
props = props.WithDeploy(deploy);
var dispatcher = system.Dispatchers.FromConfig(props.Dispatcher);
var mailbox = _system.Mailboxes.FromConfig(props.Mailbox);
//TODO: Should be: system.mailboxes.getMailboxType(props2, dispatcher.configurator.config)
if (async)
{
var reActorRef=new RepointableActorRef(system, props, dispatcher, () => mailbox, supervisor, path);
reActorRef.Initialize(async:true);
return reActorRef;
}
return new LocalActorRef(system, props, dispatcher, () => mailbox, supervisor, path);
}
else
{
//if no Router config value was specified, override with procedural input
if(deploy.RouterConfig is NoRouter)
{
deploy = deploy.WithRouterConfig(props.RouterConfig);
}
var routerDispatcher = system.Dispatchers.FromConfig(props.RouterConfig.RouterDispatcher);
var routerMailbox = _system.Mailboxes.FromConfig(props.Mailbox);
//TODO: Should be val routerMailbox = system.mailboxes.getMailboxType(routerProps, routerDispatcher.configurator.config)
// routers use context.actorOf() to create the routees, which does not allow us to pass
// these through, but obtain them here for early verification
var routerProps = Props.Empty.WithDeploy(deploy);
var routeeProps = props.WithRouter(RouterConfig.NoRouter);
var routedActorRef = new RoutedActorRef(system, routerProps, routerDispatcher, () => routerMailbox, routeeProps,supervisor, path);
routedActorRef.Initialize(async);
return routedActorRef;
}
}
示例4: Props
public Props Props(Props routeeProps)
{
return routeeProps.WithRouter(this);
}
示例5: CreateWithRouter
private InternalActorRef CreateWithRouter(ActorSystemImpl system, Props props, InternalActorRef supervisor,
ActorPath path, Deploy deploy, bool async)
{
//if no Router config value was specified, override with procedural input
if (deploy.RouterConfig.NoRouter())
{
deploy = deploy.WithRouterConfig(props.RouterConfig);
}
var routerDispatcher = system.Dispatchers.FromConfig(props.RouterConfig.RouterDispatcher);
var routerMailbox = _system.Mailboxes.CreateMailbox(props, null);
//TODO: Should be val routerMailbox = system.mailboxes.getMailboxType(routerProps, routerDispatcher.configurator.config)
// routers use context.actorOf() to create the routees, which does not allow us to pass
// these through, but obtain them here for early verification
var routerProps = Props.Empty.WithDeploy(deploy);
var routeeProps = props.WithRouter(RouterConfig.NoRouter);
var routedActorRef = new RoutedActorRef(system, routerProps, routerDispatcher, () => routerMailbox, routeeProps,
supervisor, path);
routedActorRef.Initialize(async);
return routedActorRef;
}
示例6: LocalActorOf
private static InternalActorRef LocalActorOf(ActorSystem system, Props props, InternalActorRef supervisor,
ActorPath path, Mailbox mailbox)
{
ActorCell cell = null;
if (props.RouterConfig is NoRouter || props.RouterConfig == null) //TODO: should not need nullcheck here
{
cell = new ActorCell(system, supervisor, props, path, mailbox);
}
else
{
var routeeProps = props.WithRouter(RouterConfig.NoRouter);
cell = new RoutedActorCell(system, supervisor, props, routeeProps, path, mailbox);
}
cell.NewActor();
// parentContext.Watch(cell.Self);
return cell.Self;
}
示例7: NewRouterCell
//TODO: real akka does this in the RoutedActorRef
//Keep this here for now?
public static ActorCell NewRouterCell(ActorSystem system, InternalActorRef supervisor, ActorPath path, Props props, Mailbox mailbox,Deploy deploy)
{
var routerProps = Props.Empty.WithDeploy(deploy);
var routeeProps = props.WithRouter(RouterConfig.NoRouter);
if (routerProps.RouterConfig is Pool)
{
var p = routerProps.RouterConfig.AsInstanceOf<Pool>();
if (p.Resizer != null)
{
//if there is a resizer, use ResizablePoolCell
return new ResizablePoolCell(system, supervisor, routerProps, routeeProps, path, mailbox, p);
}
}
//Use RoutedActorCell for all other routers
return new RoutedActorCell(system, supervisor, routerProps, routeeProps, path, mailbox);
}