Skip to content

Commit 5646f96

Browse files
make Router open to extension (#5201)
* make `Router` open to extension * Marked a handful of key methods as `virtual` * Replaced `TBD` with relevant XML-DOC comments in most areas * Cleaned up outdated code styles * Made `UnWrap` `protected` so it can be used in subclasses * make `RouterConfig.CreateRouter` `public`
1 parent d201452 commit 5646f96

8 files changed

+125
-148
lines changed

src/core/Akka.API.Tests/CoreAPISpec.ApproveCluster.approved.txt

+2
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,7 @@ namespace Akka.Cluster.Routing
339339
public Akka.Cluster.Routing.ClusterRouterGroupSettings Settings { get; }
340340
public override bool StopRouterWhenAllRouteesRemoved { get; }
341341
public override Akka.Routing.Router CreateRouter(Akka.Actor.ActorSystem system) { }
342+
public override Akka.Actor.ActorBase CreateRouterActor() { }
342343
public override System.Collections.Generic.IEnumerable<string> GetPaths(Akka.Actor.ActorSystem system) { }
343344
public override bool IsManagementMessage(object message) { }
344345
public override Akka.Actor.Props RoutingLogicController(Akka.Routing.RoutingLogic routingLogic) { }
@@ -364,6 +365,7 @@ namespace Akka.Cluster.Routing
364365
public override bool StopRouterWhenAllRouteesRemoved { get; }
365366
public override Akka.Actor.SupervisorStrategy SupervisorStrategy { get; }
366367
public override Akka.Routing.Router CreateRouter(Akka.Actor.ActorSystem system) { }
368+
public override Akka.Actor.ActorBase CreateRouterActor() { }
367369
public override int GetNrOfInstances(Akka.Actor.ActorSystem system) { }
368370
public override bool IsManagementMessage(object message) { }
369371
public override Akka.Actor.Props RoutingLogicController(Akka.Routing.RoutingLogic routingLogic) { }

src/core/Akka.API.Tests/CoreAPISpec.ApproveCore.approved.txt

+12-3
Original file line numberDiff line numberDiff line change
@@ -4216,6 +4216,7 @@ namespace Akka.Routing
42164216
{
42174217
protected CustomRouterConfig() { }
42184218
protected CustomRouterConfig(string routerDispatcher) { }
4219+
public override Akka.Actor.ActorBase CreateRouterActor() { }
42194220
}
42204221
public sealed class Deafen : Akka.Routing.ListenerMessage
42214222
{
@@ -4250,6 +4251,7 @@ namespace Akka.Routing
42504251
public FromConfig(Akka.Routing.Resizer resizer, Akka.Actor.SupervisorStrategy supervisorStrategy, string routerDispatcher) { }
42514252
public static Akka.Routing.FromConfig Instance { get; }
42524253
public override Akka.Routing.Router CreateRouter(Akka.Actor.ActorSystem system) { }
4254+
public override Akka.Actor.ActorBase CreateRouterActor() { }
42534255
public override int GetNrOfInstances(Akka.Actor.ActorSystem sys) { }
42544256
public Akka.Actor.Props Props() { }
42554257
public override Akka.Util.ISurrogate ToSurrogate(Akka.Actor.ActorSystem system) { }
@@ -4274,6 +4276,7 @@ namespace Akka.Routing
42744276
protected Group(System.Collections.Generic.IEnumerable<string> paths, string routerDispatcher) { }
42754277
[System.ObsoleteAttribute("Deprecated since Akka.NET v1.1. Use Paths(ActorSystem) instead.")]
42764278
public System.Collections.Generic.IEnumerable<string> Paths { get; }
4279+
public override Akka.Actor.ActorBase CreateRouterActor() { }
42774280
public bool Equals(Akka.Routing.Group other) { }
42784281
public override bool Equals(object obj) { }
42794282
public override int GetHashCode() { }
@@ -4313,6 +4316,7 @@ namespace Akka.Routing
43134316
public static Akka.Routing.NoRouter Instance { get; }
43144317
public override string RouterDispatcher { get; }
43154318
public override Akka.Routing.Router CreateRouter(Akka.Actor.ActorSystem system) { }
4319+
public override Akka.Actor.ActorBase CreateRouterActor() { }
43164320
public Akka.Actor.Props Props(Akka.Actor.Props routeeProps) { }
43174321
public override Akka.Util.ISurrogate ToSurrogate(Akka.Actor.ActorSystem system) { }
43184322
public override Akka.Routing.RouterConfig WithFallback(Akka.Routing.RouterConfig routerConfig) { }
@@ -4331,6 +4335,7 @@ namespace Akka.Routing
43314335
public override bool StopRouterWhenAllRouteesRemoved { get; }
43324336
public virtual Akka.Actor.SupervisorStrategy SupervisorStrategy { get; }
43334337
public virtual bool UsePoolDispatcher { get; }
4338+
public override Akka.Actor.ActorBase CreateRouterActor() { }
43344339
public bool Equals(Akka.Routing.Pool other) { }
43354340
public override bool Equals(object obj) { }
43364341
public override int GetHashCode() { }
@@ -4464,19 +4469,21 @@ namespace Akka.Routing
44644469
}
44654470
public class Router
44664471
{
4472+
[Akka.Annotations.InternalApiAttribute()]
44674473
public Router(Akka.Routing.RoutingLogic logic, Akka.Actor.IActorRef routee, params Akka.Actor.IActorRef[] routees) { }
44684474
public Router(Akka.Routing.RoutingLogic logic, params Akka.Routing.Routee[] routees) { }
44694475
public System.Collections.Generic.IEnumerable<Akka.Routing.Routee> Routees { get; }
44704476
public Akka.Routing.RoutingLogic RoutingLogic { get; }
4471-
public Akka.Routing.Router AddRoutee(Akka.Routing.Routee routee) { }
4477+
public virtual Akka.Routing.Router AddRoutee(Akka.Routing.Routee routee) { }
44724478
public Akka.Routing.Router AddRoutee(Akka.Actor.IActorRef routee) { }
44734479
public Akka.Routing.Router AddRoutee(Akka.Actor.ActorSelection routee) { }
4474-
public Akka.Routing.Router RemoveRoutee(Akka.Routing.Routee routee) { }
4480+
public virtual Akka.Routing.Router RemoveRoutee(Akka.Routing.Routee routee) { }
44754481
public Akka.Routing.Router RemoveRoutee(Akka.Actor.IActorRef routee) { }
44764482
public Akka.Routing.Router RemoveRoutee(Akka.Actor.ActorSelection routee) { }
44774483
public void Route(object message, Akka.Actor.IActorRef sender) { }
44784484
protected virtual void Send(Akka.Routing.Routee routee, object message, Akka.Actor.IActorRef sender) { }
4479-
public Akka.Routing.Router WithRoutees(params Akka.Routing.Routee[] routees) { }
4485+
protected object UnWrap(object message) { }
4486+
public virtual Akka.Routing.Router WithRoutees(params Akka.Routing.Routee[] routees) { }
44804487
}
44814488
public abstract class RouterConfig : Akka.Util.ISurrogated, System.IEquatable<Akka.Routing.RouterConfig>
44824489
{
@@ -4487,6 +4494,8 @@ namespace Akka.Routing
44874494
public virtual string RouterDispatcher { get; }
44884495
public virtual bool StopRouterWhenAllRouteesRemoved { get; }
44894496
public abstract Akka.Routing.Router CreateRouter(Akka.Actor.ActorSystem system);
4497+
[Akka.Annotations.InternalApiAttribute()]
4498+
public abstract Akka.Actor.ActorBase CreateRouterActor();
44904499
public bool Equals(Akka.Routing.RouterConfig other) { }
44914500
public override bool Equals(object obj) { }
44924501
public virtual bool IsManagementMessage(object message) { }

src/core/Akka.API.Tests/CoreAPISpec.ApproveRemote.approved.txt

+1
Original file line numberDiff line numberDiff line change
@@ -401,6 +401,7 @@ namespace Akka.Remote.Routing
401401
public override string RouterDispatcher { get; }
402402
public override Akka.Actor.SupervisorStrategy SupervisorStrategy { get; }
403403
public override Akka.Routing.Router CreateRouter(Akka.Actor.ActorSystem system) { }
404+
public override Akka.Actor.ActorBase CreateRouterActor() { }
404405
public bool Equals(Akka.Routing.RouterConfig other) { }
405406
public override int GetNrOfInstances(Akka.Actor.ActorSystem system) { }
406407
public override Akka.Util.ISurrogate ToSurrogate(Akka.Actor.ActorSystem system) { }

src/core/Akka.Cluster/Routing/ClusterRoutingConfig.cs

+4-10
Original file line numberDiff line numberDiff line change
@@ -347,11 +347,8 @@ public override int GetNrOfInstances(ActorSystem system)
347347
}
348348
}
349349

350-
/// <summary>
351-
/// TBD
352-
/// </summary>
353-
/// <returns>TBD</returns>
354-
internal override RouterActor CreateRouterActor()
350+
/// <inheritdoc cref="RouterConfig.CreateRouterActor"/>
351+
public override ActorBase CreateRouterActor()
355352
{
356353
return new ClusterRouterPoolActor(Local.SupervisorStrategy, Settings);
357354
}
@@ -497,11 +494,8 @@ public override IEnumerable<string> GetPaths(ActorSystem system)
497494
return Settings.RouteesPaths;
498495
}
499496

500-
/// <summary>
501-
/// TBD
502-
/// </summary>
503-
/// <returns>TBD</returns>
504-
internal override RouterActor CreateRouterActor()
497+
/// <inheritdoc cref="RouterConfig.CreateRouterActor"/>
498+
public override ActorBase CreateRouterActor()
505499
{
506500
return new ClusterRouterGroupActor(Settings);
507501
}

src/core/Akka.Remote/Routing/RemoteRouterConfig.cs

+3-7
Original file line numberDiff line numberDiff line change
@@ -94,13 +94,9 @@ internal override Routee NewRoutee(Props routeeProps, IActorContext context)
9494
.AttachChild(Local.EnrichWithPoolDispatcher(routeeProps, context).WithDeploy(deploy), false, name);
9595
return new ActorRefRoutee(actorRef);
9696
}
97-
98-
// TODO: why internal?
99-
/// <summary>
100-
/// TBD
101-
/// </summary>
102-
/// <returns>TBD</returns>
103-
internal override RouterActor CreateRouterActor()
97+
98+
/// <inheritdoc cref="RouterConfig.CreateRouterActor"/>
99+
public override ActorBase CreateRouterActor()
104100
{
105101
return Local.CreateRouterActor();
106102
}

src/core/Akka/Routing/RoutedActorCell.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ public override void SendMessage(Envelope envelope)
201201
/// </summary>
202202
protected override ActorBase CreateNewActorInstance()
203203
{
204-
RouterActor instance = RouterConfig.CreateRouterActor();
204+
ActorBase instance = RouterConfig.CreateRouterActor();
205205
return instance;
206206
}
207207
}

0 commit comments

Comments
 (0)