diff --git a/samples/MessagingGAgent.Client/Program.cs b/samples/MessagingGAgent.Client/Program.cs index 73d8f472..f9eb6d4d 100644 --- a/samples/MessagingGAgent.Client/Program.cs +++ b/samples/MessagingGAgent.Client/Program.cs @@ -2,7 +2,6 @@ using MessagingGAgent.Grains.Agents.Events; using MessagingGAgent.Grains.Agents.Group; using MessagingGAgent.Grains.Agents.Messaging; -using MessagingGAgent.Grains.Agents.Publisher; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.DependencyInjection; diff --git a/samples/MessagingGAgent.Grains/Agents/Publisher/IPublishingGAgent.cs b/samples/MessagingGAgent.Grains/Agents/Publisher/IPublishingGAgent.cs deleted file mode 100644 index af1773e7..00000000 --- a/samples/MessagingGAgent.Grains/Agents/Publisher/IPublishingGAgent.cs +++ /dev/null @@ -1,8 +0,0 @@ -using Aevatar.Core.Abstractions; - -namespace MessagingGAgent.Grains.Agents.Publisher; - -public interface IPublishingGAgent : IGAgent -{ - Task PublishEventAsync(T @event) where T : EventBase; -} \ No newline at end of file diff --git a/samples/MessagingGAgent.Grains/Agents/Publisher/PublishingGAgent.cs b/samples/MessagingGAgent.Grains/Agents/Publisher/PublishingGAgent.cs deleted file mode 100644 index c52b7ae4..00000000 --- a/samples/MessagingGAgent.Grains/Agents/Publisher/PublishingGAgent.cs +++ /dev/null @@ -1,32 +0,0 @@ -using Aevatar.Core; -using Aevatar.Core.Abstractions; -using Microsoft.Extensions.Logging; -using Orleans.Providers; - -namespace MessagingGAgent.Grains.Agents.Publisher; - -[GenerateSerializer] -public class PublishingAgentState : StateBase -{ -} - -[StorageProvider(ProviderName = "PubSubStore")] -[LogConsistencyProvider(ProviderName = "LogStorage")] -public class PublishingGAgent : GAgentBase, IPublishingGAgent -{ - public override Task GetDescriptionAsync() - { - return Task.FromResult("Agent to be used for publishing new events."); - } - - public async Task PublishEventAsync(T @event) where T : EventBase - { - if (@event == null) - { - throw new ArgumentNullException(nameof(@event)); - } - - Logger.LogInformation($"PublishingAgent publish {@event}"); - await PublishAsync(@event); - } -} \ No newline at end of file diff --git a/samples/MessagingGAgent.Grains/Agents/Publisher/PublishingStateLogEvent.cs b/samples/MessagingGAgent.Grains/Agents/Publisher/PublishingStateLogEvent.cs deleted file mode 100644 index 521c24cf..00000000 --- a/samples/MessagingGAgent.Grains/Agents/Publisher/PublishingStateLogEvent.cs +++ /dev/null @@ -1,8 +0,0 @@ -using Aevatar.Core.Abstractions; - -namespace MessagingGAgent.Grains.Agents.Publisher; - -public class PublishingStateLogEvent : StateLogEventBase -{ - -} \ No newline at end of file diff --git a/src/Aevatar.Core.Abstractions/IPublishingGAgent.cs b/src/Aevatar.Core.Abstractions/IPublishingGAgent.cs new file mode 100644 index 00000000..06937415 --- /dev/null +++ b/src/Aevatar.Core.Abstractions/IPublishingGAgent.cs @@ -0,0 +1,6 @@ +namespace Aevatar.Core.Abstractions; + +public interface IPublishingGAgent : IGAgent +{ + Task PublishEventAsync(T @event, params IGAgent[] agents) where T : EventBase; +} \ No newline at end of file diff --git a/test/Aevatar.Core.Tests/TestGAgents/PublishingGAgent.cs b/src/Aevatar.Core/PublishingGAgent.cs similarity index 74% rename from test/Aevatar.Core.Tests/TestGAgents/PublishingGAgent.cs rename to src/Aevatar.Core/PublishingGAgent.cs index cc6d9982..aa8a01b8 100644 --- a/test/Aevatar.Core.Tests/TestGAgents/PublishingGAgent.cs +++ b/src/Aevatar.Core/PublishingGAgent.cs @@ -1,18 +1,19 @@ using Aevatar.Core.Abstractions; -using Aevatar.Core.Tests.TestStateLogEvents; using Microsoft.Extensions.Logging; -using Orleans.Providers; -namespace Aevatar.Core.Tests.TestGAgents; +namespace Aevatar.Core; [GenerateSerializer] public class PublishingAgentState : StateBase { } -public class PublishingStateLogEvent : StateLogEventBase; +[GenerateSerializer] +public class PublishingStateLogEvent : StateLogEventBase +{ +} -[GAgent("publishing")] +[GAgent] public class PublishingGAgent : GAgentBase, IPublishingGAgent { public override Task GetDescriptionAsync() @@ -20,12 +21,14 @@ public override Task GetDescriptionAsync() return Task.FromResult("Agent to be used for publishing new events."); } - public async Task PublishEventAsync(T @event) where T : EventBase + public async Task PublishEventAsync(T @event, params IGAgent[] agents) where T : EventBase { if (@event == null) { throw new ArgumentNullException(nameof(@event)); } + + await RegisterManyAsync(agents.ToList()); Logger.LogInformation($"PublishingAgent publish {@event}"); await PublishAsync(@event); diff --git a/test/Aevatar.Core.Tests/TestGAgents/IPublishingGAgent.cs b/test/Aevatar.Core.Tests/TestGAgents/IPublishingGAgent.cs deleted file mode 100644 index 1b3d311b..00000000 --- a/test/Aevatar.Core.Tests/TestGAgents/IPublishingGAgent.cs +++ /dev/null @@ -1,8 +0,0 @@ -using Aevatar.Core.Abstractions; - -namespace Aevatar.Core.Tests.TestGAgents; - -public interface IPublishingGAgent : IGAgent -{ - Task PublishEventAsync(T @event) where T : EventBase; -} \ No newline at end of file diff --git a/test/Aevatar.GAgents.Tests/GAgentFactoryTests.cs b/test/Aevatar.GAgents.Tests/GAgentFactoryTests.cs index 638bfdd4..b7c7ae2f 100644 --- a/test/Aevatar.GAgents.Tests/GAgentFactoryTests.cs +++ b/test/Aevatar.GAgents.Tests/GAgentFactoryTests.cs @@ -60,7 +60,7 @@ public async Task CreateGAgentByGenericTypeTest() var gAgent = await _gAgentFactory.GetGAgentAsync(); gAgent.ShouldNotBeNull(); Should.NotThrow(() => gAgent.GetPrimaryKey()); - gAgent.GetGrainId().ShouldBe(GrainId.Create("Aevatar.Core.Tests.TestGAgents.publishing", + gAgent.GetGrainId().ShouldBe(GrainId.Create("Aevatar.Core.PublishingGAgent", gAgent.GetPrimaryKey().ToString("N"))); await CheckSubscribedEventsAsync(gAgent); }