BotSharp/src/Infrastructure/BotSharp.Core/Routing/RoutingService.GetPlanner.cs

25 lines
708 B
C#
Raw Normal View History

2024-01-27 01:14:14 +00:00
using BotSharp.Abstraction.Routing.Enums;
using BotSharp.Abstraction.Routing.Planning;
using BotSharp.Core.Routing.Planning;
2024-01-27 01:14:14 +00:00
namespace BotSharp.Core.Routing;
public partial class RoutingService
{
2024-07-25 22:11:51 +00:00
public IRoutingPlaner GetPlanner(Agent router)
2024-01-27 01:14:14 +00:00
{
2024-02-19 22:55:41 +00:00
var rule = router.RoutingRules.FirstOrDefault(x => x.Type == RuleType.Planner);
2024-01-27 01:14:14 +00:00
2024-07-25 22:11:51 +00:00
var planner = _services.GetServices<IRoutingPlaner>().
2024-02-19 22:55:41 +00:00
FirstOrDefault(x => x.GetType().Name.EndsWith(rule.Field));
if (planner == null)
{
_logger.LogError($"Can't find specific planner named {rule.Field}");
2024-01-27 01:14:14 +00:00
return _services.GetRequiredService<NaivePlanner>();
2024-02-19 22:55:41 +00:00
}
return planner;
2024-01-27 01:14:14 +00:00
}
}