95 changed files
LabApps.Actors.Core | ||
ActorBase.cs | ||
ActorFactories.cs | ||
ActorFactoryAttribute.cs | ||
ActorFactoryHelpers.cs | ||
ActorQueueBase.cs | ||
AsyncEventQueue.cs + | ||
CompletionActor.cs | ||
CompletionEvent.cs | ||
EventFactories.cs + | ||
EventFactoryAttribute.cs + | ||
GetStateRequest.cs | ||
IActor.cs | ||
IActorFactories.cs | ||
IActorState.cs | ||
IEventFactories.cs + | ||
IEventFactory.cs | ||
IFactoryBundle.cs + | ||
IHydration.cs | ||
IRuntime.cs | ||
IStateFactories.cs + | ||
ITypedActorRef.cs | ||
LabApps.Actors.Core.csproj | ||
RuntimeBase.cs | ||
StateFactories.cs + | ||
StateFactoryAttribute.cs + | ||
TimerActor.cs | ||
TimerState.cs | ||
VoidActor.cs | ||
VoidEvent.cs | ||
VoidEventFactory.cs + | ||
VoidState.cs | ||
VoidStateFactory.cs + | ||
LabApps.Actors.Core.Tests | ||
ActorAttributeTests.cs | ||
GoodActor.cs | ||
LabApps.Actors.Events | ||
BoolEvent.cs | ||
BoolEventFactory.cs + | ||
DoubleEvent.cs | ||
DoubleEventFactory.cs + | ||
LabApps.Actors.Events.csproj | ||
StringEvent.cs | ||
StringEventFactory.cs | ||
LabApps.Actors.Runtime.AzureFn | ||
DomainEntityBase.cs | ||
EntityRuntime.cs | ||
IEntityActor.cs | ||
LabApps.Actors.Runtime.AzureFn.csproj | ||
TypedEntityActorRef.cs | ||
LabApps.Actors.Runtime.Coyote | ||
CoyoteRuntime.cs | ||
LabApps.Actors.Runtime.Coyote.csproj | ||
TypedActorRef.cs | ||
LabApps.Actors.Runtime.Dapr | ||
DaprRuntime.cs | ||
LabApps.Actors.Runtime.Dapr.csproj | ||
LabApps.Actors.Runtime.SelfHosted | ||
Acknowledgement.cs | ||
ActorQueue.cs | ||
LabApps.Actors.Runtime.SelfHosted.csproj | ||
LocalRuntime.cs | ||
TestRuntime.cs | ||
TypedActorRef.cs | ||
LabApps.Actors.Schemas | ||
LabApps.Actors.Schemas.csproj | ||
LabApps.Actors.Tests | ||
ActorFuncTests.cs | ||
CounterActor.cs | ||
CounterState.cs | ||
DependencyInjectionTests.cs | ||
GreeterActorTests.cs | ||
LabApps.Actors.Tests.csproj | ||
MultiRuntimeTests.cs | ||
PersistenceTests.cs | ||
PingActor.cs | ||
PingEvent.cs + | ||
PingEventFactory.cs + | ||
PongActor.cs | ||
StreamWriterActor.cs | ||
TestActor.cs | ||
TypedActorFuncTests.cs | ||
TypedActorPerfTests.cs | ||
Testing.Benchmarks | ||
DispatcherL0.cs | ||
Testing.Benchmarks.csproj | ||
Testing.Common.Messages | ||
Testing.Common.Messages.csproj | ||
TestMessage.cs | ||
Testing.DomainA.Actors | ||
TestActor.cs | ||
TestClient.cs | ||
TestClientState.cs | ||
Testing.DomainA.Actors.csproj | ||
Testing.DomainA.AzureFn | ||
DomainEntity.cs | ||
Testing.DomainB.Actors | ||
GreeterActor.cs | ||
TestActor.cs | ||
TestServer.cs | ||
Testing.DomainB.AzureFn | ||
DomainEntity.cs | ||
Testing.DomainB.Proxies | ||
TestServer.cs | ||
Testing.gRPC.Client | ||
GrpcClient.cs | ||
Testing.gRPC.Client.csproj | ||
Testing.gRPC.Common | ||
Testing.gRPC.Common.csproj | ||
Testing.gRPC.CoreCli | ||
Program.cs | ||
Testing.gRPC.Server/Services | ||
ActorService.cs | ||
Testing.SelfHost | ||
Program.cs | ||
publish.cmd | ||
Add comment 15 protected readonly string _key;
Add comment 16 protected readonly IRuntime _runtime;
Add comment 17 protected readonly ITypedActorRef<TState> _ref;
Add comment 18 Plus protected readonly IStateFactory<TState> _stateFactory;
Add comment 18 19
Add comment 19 20 // message sent sequence number
Add comment 20 21 // todo restore sequence on load
Add comment 26 27 public ITypedActorRef<TState> TypedRef => _ref;
Add comment 27 28 protected ILogger Logger => _runtime.Logger;
Add comment 28 29
Add comment 29 Minus private bool _isDisposed;
Add comment 30 Plus private volatile bool _isDisposed;
Add comment 30 31 protected virtual void Dispose(bool disposing) { }
Add comment 31 32 public void Dispose()
Add comment 32 33 {
Add comment 36 37 GC.SuppressFinalize(this);
Add comment 37 38 }
Add comment 38 39
Add comment 40 Plus protected ActorBase(string key, IRuntime runtime)
Add comment 41 Plus {
Add comment 42 Plus _typeName = GetType().FullName;
Add comment 43 Plus _key = key;
Add comment 44 Plus _runtime = runtime;
Add comment 45 Plus _ref = _runtime.GetTypedRef<TState>(_typeName, key);
Add comment 46 Plus _stateFactory = _runtime.StateFactories.GetFactory<TState>();
Add comment 47 Plus }
Add comment 48 Plus
Add comment 39 49 // actor state
Add comment 40 50 private bool _initialized = false;
Add comment 41 Minus protected TState _state = new TState();
Add comment 51 Plus protected TState? _state = null;
Add comment 42 52
Add comment 43 Minus protected virtual bool? OnCanPurge() => null;
Add comment 44 Minus public bool IsEmpty() => OnCanPurge() ?? _state.IsEmpty();
Add comment 45 Minus
Add comment 46 53 public void LoadState(string? stateTypeName, ReadOnlyMemory<byte> buffer)
Add comment 47 54 {
Add comment 48 55 if (buffer.IsEmpty) return;
Add comment 51 58 // todo state upgrade feature needed
Add comment 52 59 throw new NotSupportedException($"Cannot load state of type {stateTypeName}; exepcted type {typeof(TState).FullName}.");
Add comment 53 60 }
Add comment 54 Minus _state.Rehydrate(buffer);
Add comment 61 Plus _state = _stateFactory.CreateTypedState(buffer);
Add comment 55 62 }
Add comment 56 63
Add comment 64 Plus protected virtual void OnException(Exception ex, string methodName)
Add comment 65 Plus {
Add comment 66 Plus }
Add comment 67 Plus private void NotifyException(Exception ex, string methodName)
Add comment 68 Plus {
Add comment 69 Plus _runtime.Logger.LogError(ex, $"Unhandled exception in {GetType().FullName}.{methodName}()");
Add comment 70 Plus OnException(ex, methodName);
Add comment 71 Plus }
Add comment 57 72 public ReadOnlyMemory<byte> SaveState()
Add comment 58 73 {
Add comment 59 Minus return _state.Dehydrate();
Add comment 74 Plus try
Add comment 75 Plus {
Add comment 76 Plus return _state is null ? ReadOnlyMemory<byte>.Empty : _state.Dehydrate();
Add comment 77 Plus }
Add comment 78 Plus catch (Exception ex)
Add comment 79 Plus {
Add comment 80 Plus NotifyException(ex, nameof(SaveState));
Add comment 81 Plus throw;
Add comment 60 82 }
Add comment 83 Plus }
Add comment 61 84
Add comment 62 85 public void LoadEvents(IEnumerable<ReadOnlyMemory<byte>> buffers)
Add comment 63 86 {
Add comment 87 Plus // todo
Add comment 64 88 }
Add comment 65 89
Add comment 66 90 public IEnumerable<ReadOnlyMemory<byte>> SaveEvents()
Add comment 72 96 }
Add comment 73 97 }
Add comment 74 98
Add comment 75 Minus protected ActorBase(string key, IRuntime runtime)
Add comment 76 Minus {
Add comment 77 Minus _typeName = GetType().FullName;
Add comment 78 Minus _key = key;
Add comment 79 Minus _runtime = runtime;
Add comment 80 Minus _ref = _runtime.GetTypedRef<TState>(_typeName, key);
Add comment 81 Minus }
Add comment 82 Minus
Add comment 83 Minus public abstract TState OnInitialize(TState previous, IActorEvent @event, IActorRef sender);
Add comment 84 Minus public abstract ValueTask<TState> OnReceiveAsync(TState previous, IActorEvent @event, IActorRef sender, int queueLength);
Add comment 99 Plus public abstract TState? OnInitialize(TState? previous, IActorEvent @event, IActorRef sender);
Add comment 100 Plus public abstract ValueTask<TState?> OnReceiveAsync(TState? previous, IActorEvent @event, IActorRef sender, int queueLength);
Add comment 85 101
Add comment 86 102 public async ValueTask ReceiveAsync(IActorEvent payload, IActorRef sender, bool cancelled, int queueLength)
Add comment 87 103 {
Add comment 104 Plus try
Add comment 105 Plus {
Add comment 88 106 switch (payload)
Add comment 89 107 {
Add comment 90 108 case null:
Add comment 96 114 sync.SetResult(_state);
Add comment 97 115 break;
Add comment 98 116 default:
Add comment 99 Minus try
Add comment 100 Minus {
Add comment 101 117 if (!cancelled)
Add comment 102 118 {
Add comment 103 119 if (!_initialized)
Add comment 107 123 }
Add comment 108 124 _state = await OnReceiveAsync(_state, payload, sender, queueLength).ConfigureAwait(false);
Add comment 109 125 }
Add comment 126 Plus break;
Add comment 127 Plus }
Add comment 110 128 }
Add comment 111 129 catch (Exception ex)
Add comment 112 130 {
Add comment 113 131 Logger.LogError(ex, "Unhandled error in {0}.OnReceiveAsync()", _typeName);
Add comment 114 132 }
Add comment 115 Minus break;
Add comment 116 Minus }
Add comment 117 133 }
Add comment 118 134
Add comment 119 135 // helpers
Add comment 123 139 target.Send(@event, _ref, sequence);
Add comment 124 140 }
Add comment 125 141
Add comment 126 Minus protected void SendEventTo<TActor2>(string key, IActorEvent @event)
Add comment 142 Plus protected void SendEventTo<TActor2>(string? key, IActorEvent @event)
Add comment 127 143 {
Add comment 144 Plus if (key is null) throw new ArgumentNullException(nameof(key));
Add comment 128 145 var target = _runtime.GetRef(typeof(TActor2).FullName, key);
Add comment 129 146 SendEventTo(target, @event);
Add comment 130 147 }
ActorFactories.cs
/LabApps.Actors.Core/ActorFactories.cs-31+106/LabApps.Actors.Core/ActorFactories.cs
Add comment 8
Add comment 9 namespace LabApps.Actors.Core
Add comment 10 {
Add comment 11 Minus public sealed class ActorFactories : IActorFactories
Add comment 11 Plus public sealed class FactoryBundle : IFactoryBundle
Add comment 12 {
Add comment 13 Minus private readonly ImmutableDictionary<string, IActorFactory> _factories = ImmutableDictionary<string, IActorFactory>.Empty;
Add comment 13 Plus private static IEnumerable<Assembly> BuiltinAssemblies()
Add comment 14 Plus {
Add comment 15 Plus yield return typeof(VoidActor).Assembly;
Add comment 16 Plus }
Add comment 14 17
Add comment 15 Minus public ActorFactories(params Assembly[] actorAssemblies)
Add comment 18 Plus private static IEnumerable<Type> GetLoadableTypes(Assembly assembly)
Add comment 16 19 {
Add comment 17 Minus var temp = ActorFactoryHelpers.GetActorFactories(actorAssemblies)
Add comment 18 Minus .Select(f => new KeyValuePair<string, IActorFactory>(f.ActorType.FullName, f))
Add comment 19 Minus .ToArray();
Add comment 20 Minus _factories = ImmutableDictionary<string, IActorFactory>.Empty.AddRange(temp);
Add comment 20 Plus // Algorithm from StackOverflow answer here:
Add comment 21 Plus // http://stackoverflow.com/questions/7889228/how-to-prevent-reflectiontypeloadexception-when-calling-assembly-gettypes
Add comment 22 Plus
Add comment 23 Plus if (assembly is null) throw new ArgumentNullException(nameof(assembly));
Add comment 24 Plus try
Add comment 25 Plus {
Add comment 26 Plus return assembly.DefinedTypes.Select(t => t.AsType());
Add comment 21 27 }
Add comment 28 Plus catch (ReflectionTypeLoadException ex)
Add comment 29 Plus {
Add comment 30 Plus return ex.Types.Where(t => t != null);
Add comment 31 Plus }
Add comment 32 Plus }
Add comment 22 33
Add comment 23 Minus public IEnumerable<IActorFactory> GetFactories()
Add comment 34 Plus public IActorFactories ActorFactories { get; private set; }
Add comment 35 Plus
Add comment 36 Plus public IStateFactories StateFactories { get; private set; }
Add comment 37 Plus
Add comment 38 Plus public IEventFactories EventFactories { get; private set; }
Add comment 39 Plus
Add comment 40 Plus public FactoryBundle(params Type[] anchorTypes)
Add comment 41 Plus {
Add comment 42 Plus IEnumerable<Type> factoryTypes =
Add comment 43 Plus BuiltinAssemblies()
Add comment 44 Plus .Concat(anchorTypes.Select(t => t.Assembly))
Add comment 45 Plus .Distinct()
Add comment 46 Plus .SelectMany(assembly => GetLoadableTypes(assembly));
Add comment 47 Plus
Add comment 48 Plus // scan for factories
Add comment 49 Plus List<IActorFactory> actorFactories = new List<IActorFactory>();
Add comment 50 Plus List<IStateFactory> stateFactories = new List<IStateFactory>();
Add comment 51 Plus List<IEventFactory> eventFactories = new List<IEventFactory>();
Add comment 52 Plus foreach (Type factoryType in factoryTypes)
Add comment 53 Plus {
Add comment 54 Plus // actor factories
Add comment 55 Plus if (typeof(IActorFactory).IsAssignableFrom(factoryType) && (!factoryType.IsAbstract))
Add comment 56 Plus {
Add comment 57 Plus var attr = factoryType.GetCustomAttribute<ActorFactoryAttribute>();
Add comment 58 Plus if (attr != null && !attr.IsDisabled)
Add comment 59 Plus {
Add comment 60 Plus // factory must have parameterless constructor
Add comment 61 Plus IActorFactory? factory = null;
Add comment 62 Plus try
Add comment 63 Plus {
Add comment 64 Plus factory = (IActorFactory)Activator.CreateInstance(factoryType);
Add comment 65 Plus }
Add comment 66 Plus catch (MissingMethodException)
Add comment 67 Plus {
Add comment 68 Plus }
Add comment 69 Plus if (!(factory is null))
Add comment 70 Plus actorFactories.Add(factory);
Add comment 71 Plus }
Add comment 72 Plus }
Add comment 73 Plus // state factories
Add comment 74 Plus if (typeof(IStateFactory).IsAssignableFrom(factoryType) && (!factoryType.IsAbstract))
Add comment 75 Plus {
Add comment 76 Plus var attr = factoryType.GetCustomAttribute<StateFactoryAttribute>();
Add comment 77 Plus if (attr != null && !attr.IsDisabled)
Add comment 78 Plus {
Add comment 79 Plus // factory must have parameterless constructor
Add comment 80 Plus IStateFactory? factory = null;
Add comment 81 Plus try
Add comment 82 Plus {
Add comment 83 Plus factory = (IStateFactory)Activator.CreateInstance(factoryType);
Add comment 84 Plus }
Add comment 85 Plus catch (MissingMethodException)
Add comment 24 86 {
Add comment 25 Minus return _factories.Values;
Add comment 87 Plus }
Add comment 88 Plus if (!(factory is null))
Add comment 89 Plus stateFactories.Add(factory);
Add comment 90 Plus }
Add comment 26 91 }
Add comment 27 Minus
Add comment 28 Minus public IActorFactory GetFactory(string typeFullName)
Add comment 92 Plus // event factories
Add comment 93 Plus if (typeof(IEventFactory).IsAssignableFrom(factoryType) && (!factoryType.IsAbstract))
Add comment 94 Plus {
Add comment 95 Plus var attr = factoryType.GetCustomAttribute<EventFactoryAttribute>();
Add comment 96 Plus if (attr != null && !attr.IsDisabled)
Add comment 97 Plus {
Add comment 98 Plus // factory must have parameterless constructor
Add comment 99 Plus IEventFactory? factory = null;
Add comment 100 Plus try
Add comment 29 101 {
Add comment 30 Minus if (!_factories.TryGetValue(typeFullName, out var factory))
Add comment 102 Plus factory = (IEventFactory)Activator.CreateInstance(factoryType);
Add comment 103 Plus }
Add comment 104 Plus catch (MissingMethodException)
Add comment 31 105 {
Add comment 32 Minus throw new ArgumentException($"Type '{typeFullName}' is not a registered actor type", nameof(typeFullName));
Add comment 106 Plus }
Add comment 107 Plus if (!(factory is null))
Add comment 108 Plus eventFactories.Add(factory);
Add comment 109 Plus }
Add comment 33 110 }
Add comment 34 Minus return factory;
Add comment 35 111 }
Add comment 36 112
Add comment 37 Minus public IActorFactory GetFactory<TActor>()
Add comment 38 Minus {
Add comment 39 Minus return GetFactory(typeof(TActor).FullName);
Add comment 113 Plus ActorFactories = new ActorFactories(actorFactories);
Add comment 114 Plus StateFactories = new StateFactories(stateFactories);
Add comment 115 Plus EventFactories = new EventFactories(eventFactories);
Add comment 40 116 }
Add comment 41 117
Add comment 118 Plus
Add comment 42 119 }
Add comment 43 Minus public sealed class EventFactories : IEventFactories
Add comment 120 Plus internal sealed class ActorFactories : IActorFactories
Add comment 44 121 {
Add comment 45 Minus private readonly ImmutableDictionary<string, IEventFactory> _factories = ImmutableDictionary<string, IEventFactory>.Empty;
Add comment 122 Plus private readonly ImmutableDictionary<string, IActorFactory> _factories = ImmutableDictionary<string, IActorFactory>.Empty;
Add comment 46 123
Add comment 47 Minus public EventFactories(params Assembly[] eventAssemblies)
Add comment 124 Plus public ActorFactories(IEnumerable<IActorFactory> factories)
Add comment 48 125 {
Add comment 49 Minus var temp = ActorFactoryHelpers.GetEventFactories(eventAssemblies)
Add comment 50 Minus .Select(f => new KeyValuePair<string, IEventFactory>(f.EventType.FullName, f))
Add comment 51 Minus .ToArray();
Add comment 52 Minus _factories = ImmutableDictionary<string, IEventFactory>.Empty.AddRange(temp);
Add comment 126 Plus _factories = ImmutableDictionary<string, IActorFactory>.Empty
Add comment 127 Plus .AddRange(factories.Select(f => new KeyValuePair<string, IActorFactory>(f.ActorType.FullName, f)));
Add comment 53 128 }
Add comment 54 129
Add comment 55 Minus public IEnumerable<IEventFactory> GetFactories()
Add comment 130 Plus public IEnumerable<IActorFactory> GetFactories()
Add comment 56 131 {
Add comment 57 132 return _factories.Values;
Add comment 58 133 }
Add comment 59 134
Add comment 60 Minus public IEventFactory GetFactory(string typeFullName)
Add comment 135 Plus public IActorFactory GetFactory(string typeFullName)
Add comment 61 136 {
Add comment 62 Minus if (!_factories.TryGetValue(typeFullName, out var Factory))
Add comment 137 Plus if (!_factories.TryGetValue(typeFullName, out var factory))
Add comment 63 138 {
Add comment 64 Minus throw new ArgumentException($"Type '{typeFullName}' is not a registered Event type", nameof(typeFullName));
Add comment 139 Plus throw new ArgumentException($"No actor factory found for type '{typeFullName}'", nameof(typeFullName));
Add comment 65 140 }
Add comment 66 Minus return Factory;
Add comment 141 Plus return factory;
Add comment 67 142 }
Add comment 68 143
Add comment 69 Minus public IEventFactory GetFactory<TEvent>()
Add comment 144 Plus public IActorFactory GetFactory<TActor>()
Add comment 70 145 {
Add comment 71 Minus return GetFactory(typeof(TEvent).FullName);
Add comment 146 Plus return GetFactory(typeof(TActor).FullName);
Add comment 72 147 }
Add comment 73 148
Add comment 74 149 }
ActorFactoryAttribute.cs
/LabApps.Actors.Core/ActorFactoryAttribute.cs/LabApps.Actors.Core/ActorFactoryAttribute.cs
ActorFactoryHelpers.cs
/LabApps.Actors.Core/ActorFactoryHelpers.cs/LabApps.Actors.Core/ActorFactoryHelpers.cs
AsyncEventQueue.cs
/LabApps.Actors.Core/AsyncEventQueue.cs/LabApps.Actors.Core/AsyncEventQueue.cs
CompletionActor.cs
/LabApps.Actors.Core/CompletionActor.cs/LabApps.Actors.Core/CompletionActor.cs
CompletionEvent.cs
/LabApps.Actors.Core/CompletionEvent.cs/LabApps.Actors.Core/CompletionEvent.cs
EventFactoryAttribute.cs
/LabApps.Actors.Core/EventFactoryAttribute.cs/LabApps.Actors.Core/EventFactoryAttribute.cs
GetStateRequest.cs
/LabApps.Actors.Core/GetStateRequest.cs/LabApps.Actors.Core/GetStateRequest.cs
IActorFactories.cs
/LabApps.Actors.Core/IActorFactories.cs/LabApps.Actors.Core/IActorFactories.cs
IEventFactories.cs
/LabApps.Actors.Core/IEventFactories.cs/LabApps.Actors.Core/IEventFactories.cs
IStateFactories.cs
/LabApps.Actors.Core/IStateFactories.cs/LabApps.Actors.Core/IStateFactories.cs
LabApps.Actors.Core.csproj
/LabApps.Actors.Core/LabApps.Actors.Core.csproj/LabApps.Actors.Core/LabApps.Actors.Core.csproj
StateFactoryAttribute.cs
/LabApps.Actors.Core/StateFactoryAttribute.cs/LabApps.Actors.Core/StateFactoryAttribute.cs
VoidEventFactory.cs
/LabApps.Actors.Core/VoidEventFactory.cs/LabApps.Actors.Core/VoidEventFactory.cs
VoidStateFactory.cs
/LabApps.Actors.Core/VoidStateFactory.cs/LabApps.Actors.Core/VoidStateFactory.cs
ActorAttributeTests.cs
/LabApps.Actors.Core.Tests/ActorAttributeTests.cs/LabApps.Actors.Core.Tests/ActorAttributeTests.cs
BoolEventFactory.cs
/LabApps.Actors.Events/BoolEventFactory.cs/LabApps.Actors.Events/BoolEventFactory.cs
DoubleEventFactory.cs
/LabApps.Actors.Events/DoubleEventFactory.cs/LabApps.Actors.Events/DoubleEventFactory.cs
LabApps.Actors.Events.csproj
/LabApps.Actors.Events/LabApps.Actors.Events.csproj/LabApps.Actors.Events/LabApps.Actors.Events.csproj
StringEventFactory.cs
/LabApps.Actors.Events/StringEventFactory.cs/LabApps.Actors.Events/StringEventFactory.cs
DomainEntityBase.cs
/LabApps.Actors.Runtime.AzureFn/DomainEntityBase.cs/LabApps.Actors.Runtime.AzureFn/DomainEntityBase.cs
EntityRuntime.cs
/LabApps.Actors.Runtime.AzureFn/EntityRuntime.cs/LabApps.Actors.Runtime.AzureFn/EntityRuntime.cs
IEntityActor.cs
/LabApps.Actors.Runtime.AzureFn/IEntityActor.cs/LabApps.Actors.Runtime.AzureFn/IEntityActor.cs
LabApps.Actors.Runtime.AzureFn.csproj
/LabApps.Actors.Runtime.AzureFn/LabApps.Actors.Runtime.AzureFn.csproj/LabApps.Actors.Runtime.AzureFn/LabApps.Actors.Runtime.AzureFn.csproj
TypedEntityActorRef.cs
/LabApps.Actors.Runtime.AzureFn/TypedEntityActorRef.cs/LabApps.Actors.Runtime.AzureFn/TypedEntityActorRef.cs
CoyoteRuntime.cs
/LabApps.Actors.Runtime.Coyote/CoyoteRuntime.cs/LabApps.Actors.Runtime.Coyote/CoyoteRuntime.cs
LabApps.Actors.Runtime.Coyote.csproj
/LabApps.Actors.Runtime.Coyote/LabApps.Actors.Runtime.Coyote.csproj/LabApps.Actors.Runtime.Coyote/LabApps.Actors.Runtime.Coyote.csproj
TypedActorRef.cs
/LabApps.Actors.Runtime.Coyote/TypedActorRef.cs/LabApps.Actors.Runtime.Coyote/TypedActorRef.cs
DaprRuntime.cs
/LabApps.Actors.Runtime.Dapr/DaprRuntime.cs/LabApps.Actors.Runtime.Dapr/DaprRuntime.cs
LabApps.Actors.Runtime.Dapr.csproj
/LabApps.Actors.Runtime.Dapr/LabApps.Actors.Runtime.Dapr.csproj/LabApps.Actors.Runtime.Dapr/LabApps.Actors.Runtime.Dapr.csproj
Acknowledgement.cs
/LabApps.Actors.Runtime.SelfHosted/Acknowledgement.cs/LabApps.Actors.Runtime.SelfHosted/Acknowledgement.cs
ActorQueue.cs
/LabApps.Actors.Runtime.SelfHosted/ActorQueue.cs/LabApps.Actors.Runtime.SelfHosted/ActorQueue.cs
LabApps.Actors.Runtime.SelfHosted.csproj
/LabApps.Actors.Runtime.SelfHosted/LabApps.Actors.Runtime.SelfHosted.csproj/LabApps.Actors.Runtime.SelfHosted/LabApps.Actors.Runtime.SelfHosted.csproj
LocalRuntime.cs
/LabApps.Actors.Runtime.SelfHosted/LocalRuntime.cs/LabApps.Actors.Runtime.SelfHosted/LocalRuntime.cs
TestRuntime.cs
/LabApps.Actors.Runtime.SelfHosted/TestRuntime.cs/LabApps.Actors.Runtime.SelfHosted/TestRuntime.cs
TypedActorRef.cs
/LabApps.Actors.Runtime.SelfHosted/TypedActorRef.cs/LabApps.Actors.Runtime.SelfHosted/TypedActorRef.cs
LabApps.Actors.Schemas.csproj
/LabApps.Actors.Schemas/LabApps.Actors.Schemas.csproj/LabApps.Actors.Schemas/LabApps.Actors.Schemas.csproj
DependencyInjectionTests.cs
/LabApps.Actors.Tests/DependencyInjectionTests.cs/LabApps.Actors.Tests/DependencyInjectionTests.cs
GreeterActorTests.cs
/LabApps.Actors.Tests/GreeterActorTests.cs/LabApps.Actors.Tests/GreeterActorTests.cs
LabApps.Actors.Tests.csproj
/LabApps.Actors.Tests/LabApps.Actors.Tests.csproj/LabApps.Actors.Tests/LabApps.Actors.Tests.csproj
MultiRuntimeTests.cs
/LabApps.Actors.Tests/MultiRuntimeTests.cs/LabApps.Actors.Tests/MultiRuntimeTests.cs
PersistenceTests.cs
/LabApps.Actors.Tests/PersistenceTests.cs/LabApps.Actors.Tests/PersistenceTests.cs
PingEventFactory.cs
/LabApps.Actors.Tests/PingEventFactory.cs/LabApps.Actors.Tests/PingEventFactory.cs
StreamWriterActor.cs
/LabApps.Actors.Tests/StreamWriterActor.cs/LabApps.Actors.Tests/StreamWriterActor.cs
TypedActorFuncTests.cs
/LabApps.Actors.Tests/TypedActorFuncTests.cs/LabApps.Actors.Tests/TypedActorFuncTests.cs
TypedActorPerfTests.cs
/LabApps.Actors.Tests/TypedActorPerfTests.cs/LabApps.Actors.Tests/TypedActorPerfTests.cs
Testing.Benchmarks.csproj
/Testing.Benchmarks/Testing.Benchmarks.csproj/Testing.Benchmarks/Testing.Benchmarks.csproj
Testing.Common.Messages.csproj
/Testing.Common.Messages/Testing.Common.Messages.csproj/Testing.Common.Messages/Testing.Common.Messages.csproj
TestClientState.cs
/Testing.DomainA.Actors/TestClientState.cs/Testing.DomainA.Actors/TestClientState.cs
Testing.DomainA.Actors.csproj
/Testing.DomainA.Actors/Testing.DomainA.Actors.csproj/Testing.DomainA.Actors/Testing.DomainA.Actors.csproj
Testing.gRPC.Client.csproj
/Testing.gRPC.Client/Testing.gRPC.Client.csproj/Testing.gRPC.Client/Testing.gRPC.Client.csproj
Testing.gRPC.Common.csproj
/Testing.gRPC.Common/Testing.gRPC.Common.csproj/Testing.gRPC.Common/Testing.gRPC.Common.csproj
ActorService.cs
/Testing.gRPC.Server/Services/ActorService.cs/Testing.gRPC.Server/Services/ActorService.cs