diff --git a/Example.Backend/Program.cs b/Example.Backend/Program.cs index 88a9490..15e0604 100644 --- a/Example.Backend/Program.cs +++ b/Example.Backend/Program.cs @@ -30,11 +30,11 @@ class Program builder.Modules.Add(new CreativeRepresentationModuleProducer( new IInjectableModule[] { builder.GetModule()! }, typeof(RepresentationModule))); - builder.Modules.Add(new RemoteContextRepository()); + builder.Modules.Add(new RemoteInstanceRepository()); // builder.UseCollectableContextRepository(typeof(PrinterFactory).Assembly); - builder.Modules.Add(new MultiClientContextRepository(i => + builder.Modules.Add(new MultiClientInstanceRepository(i => { - var repo = new ContextRepository(); + var repo = new InstanceRepository(); repo.FillSingletons(typeof(PrinterFactory).Assembly); repo.Inject(builder.Modules.OfType().First()); return repo; diff --git a/Example.Frontend/Program.cs b/Example.Frontend/Program.cs index 129e91d..20758fb 100644 --- a/Example.Frontend/Program.cs +++ b/Example.Frontend/Program.cs @@ -23,7 +23,7 @@ class Program builder.Modules.Add(new CborSerializationToolkit()); builder.Modules.Add(new EndPointContext()); - builder.Modules.Add(new RemoteContextRepository()); + builder.Modules.Add(new RemoteInstanceRepository()); builder.Modules.Add(new ChannelInteractionModule()); builder.Modules.Add(new UdpUntrustedInteraction()); builder.Modules.Add(new RepresentationModule()); @@ -43,7 +43,7 @@ class Program _ = builder.GetModule()!.StartExtraction(); _ = builder.GetModule().Start(serverEndPoint); Console.WriteLine(builder.GetModule().HostId); - var context = builder.GetModule(); + var context = builder.GetModule(); var factory = context.GetSingleObject(typeof(IPrinterFactory), diff --git a/mROA/Abstract/IContextRepositoryHub.cs b/mROA/Abstract/IContextRepositoryHub.cs index 19a7987..ca2e205 100644 --- a/mROA/Abstract/IContextRepositoryHub.cs +++ b/mROA/Abstract/IContextRepositoryHub.cs @@ -2,7 +2,7 @@ namespace mROA.Abstract { public interface IContextRepositoryHub { - IContextRepository GetRepository(int clientId); + IInstanceRepository GetRepository(int clientId); void FreeRepository(int clientId); } } \ No newline at end of file diff --git a/mROA/Abstract/IEndPointContext.cs b/mROA/Abstract/IEndPointContext.cs index 44db796..8b5db20 100644 --- a/mROA/Abstract/IEndPointContext.cs +++ b/mROA/Abstract/IEndPointContext.cs @@ -2,8 +2,8 @@ { public interface IEndPointContext : IInjectableModule { - IContextRepository RealRepository { get; } - IContextRepository RemoteRepository { get; } + IInstanceRepository RealRepository { get; } + IInstanceRepository RemoteRepository { get; } int HostId { get; set; } int OwnerId { get; set; } } diff --git a/mROA/Abstract/IExecuteModule.cs b/mROA/Abstract/IExecuteModule.cs index abf76d6..ea87f0d 100644 --- a/mROA/Abstract/IExecuteModule.cs +++ b/mROA/Abstract/IExecuteModule.cs @@ -4,7 +4,7 @@ namespace mROA.Abstract { public interface IExecuteModule : IInjectableModule { - ICommandExecution Execute(ICallRequest command, IContextRepository contextRepository, + ICommandExecution Execute(ICallRequest command, IInstanceRepository instanceRepository, IRepresentationModule representationModule, IEndPointContext context); } } \ No newline at end of file diff --git a/mROA/Abstract/IContextRepository.cs b/mROA/Abstract/IInstanceRepository.cs similarity index 88% rename from mROA/Abstract/IContextRepository.cs rename to mROA/Abstract/IInstanceRepository.cs index f4857c7..2e3ef2f 100644 --- a/mROA/Abstract/IContextRepository.cs +++ b/mROA/Abstract/IInstanceRepository.cs @@ -3,7 +3,7 @@ using mROA.Implementation; namespace mROA.Abstract { - public interface IContextRepository : IInjectableModule + public interface IInstanceRepository : IInjectableModule { int HostId { get; set; } int ResisterObject(object o, IEndPointContext context); diff --git a/mROA/Implementation/Backend/BasicConfigurationExtensions.cs b/mROA/Implementation/Backend/BasicConfigurationExtensions.cs index 57b5f65..a10bdd3 100644 --- a/mROA/Implementation/Backend/BasicConfigurationExtensions.cs +++ b/mROA/Implementation/Backend/BasicConfigurationExtensions.cs @@ -21,7 +21,7 @@ namespace mROA.Implementation.Backend public static void UseCollectableContextRepository(this FullMixBuilder builder, params Assembly[] assemblies) { - var repo = new ContextRepository(); + var repo = new InstanceRepository(); repo.FillSingletons(assemblies); builder.Modules.Add(repo); } diff --git a/mROA/Implementation/Backend/BasicExecutionModule.cs b/mROA/Implementation/Backend/BasicExecutionModule.cs index 5848de9..69ceee4 100644 --- a/mROA/Implementation/Backend/BasicExecutionModule.cs +++ b/mROA/Implementation/Backend/BasicExecutionModule.cs @@ -27,13 +27,13 @@ namespace mROA.Implementation.Backend } } - public ICommandExecution Execute(ICallRequest command, IContextRepository contextRepository, + public ICommandExecution Execute(ICallRequest command, IInstanceRepository instanceRepository, IRepresentationModule representationModule, IEndPointContext endPointContext) { try { - ThrowIfNotInjected(contextRepository); + ThrowIfNotInjected(instanceRepository); if (command is CancelRequest) { return CancelExecution(command); @@ -43,7 +43,7 @@ namespace mROA.Implementation.Backend if (invoker == null) throw new Exception($"Command {command.CommandId} not found"); - var context = GetContext(command, contextRepository, invoker, endPointContext); + var context = GetContext(command, instanceRepository, invoker, endPointContext); if (context == null) throw new NullReferenceException("Instance can't be null"); @@ -70,7 +70,7 @@ namespace mROA.Implementation.Backend var result = Execute((invoker as MethodInvoker)!, context, castedParams!, command, execContext); if (command.CommandId == -1) { - contextRepository.ClearObject(command.ObjectId, endPointContext); + instanceRepository.ClearObject(command.ObjectId, endPointContext); } return result; @@ -86,12 +86,12 @@ namespace mROA.Implementation.Backend } } - private static object GetContext(ICallRequest command, IContextRepository contextRepository, + private static object GetContext(ICallRequest command, IInstanceRepository instanceRepository, IMethodInvoker invoker, IEndPointContext endPointContext) { var context = command.ObjectId.ContextId != -1 - ? contextRepository.GetObject(command.ObjectId, endPointContext) - : contextRepository.GetSingleObject(invoker.SuitableType, endPointContext); + ? instanceRepository.GetObject(command.ObjectId, endPointContext) + : instanceRepository.GetSingleObject(invoker.SuitableType, endPointContext); return context; } @@ -106,7 +106,7 @@ namespace mROA.Implementation.Backend return castedParams; } - private void ThrowIfNotInjected(IContextRepository contextRepository) + private void ThrowIfNotInjected(IInstanceRepository instanceRepository) { if (_cancellationRepo is null) throw new NullReferenceException("Method repository was not defined"); @@ -114,7 +114,7 @@ namespace mROA.Implementation.Backend if (_methodRepo is null) throw new NullReferenceException("Method repository was not defined"); - if (contextRepository is null) + if (instanceRepository is null) throw new NullReferenceException("Context repository was not defined"); } diff --git a/mROA/Implementation/Backend/HubRequestExtractor.cs b/mROA/Implementation/Backend/HubRequestExtractor.cs index 7c35b33..7a51339 100644 --- a/mROA/Implementation/Backend/HubRequestExtractor.cs +++ b/mROA/Implementation/Backend/HubRequestExtractor.cs @@ -7,8 +7,8 @@ namespace mROA.Implementation.Backend { private IConnectionHub? _hub; - private IContextRepository? _contextRepository; - private IContextRepository? _remoteContextRepository; + private IInstanceRepository? _contextRepository; + private IInstanceRepository? _remoteContextRepository; private IMethodRepository? _methodRepository; private IContextualSerializationToolKit? _serializationToolkit; private IExecuteModule? _executeModule; @@ -21,11 +21,11 @@ namespace mROA.Implementation.Backend _hub = connectionHub; _hub.OnConnected += HubOnOnConnected; break; - case MultiClientContextRepository: - case ContextRepository: - _contextRepository = dependency as IContextRepository; + case MultiClientInstanceRepository: + case InstanceRepository: + _contextRepository = dependency as IInstanceRepository; break; - case RemoteContextRepository remoteContextRepository: + case RemoteInstanceRepository remoteContextRepository: _remoteContextRepository = remoteContextRepository; break; case IMethodRepository methodRepository: diff --git a/mROA/Implementation/Backend/ContextRepository.cs b/mROA/Implementation/Backend/InstanceRepository.cs similarity index 97% rename from mROA/Implementation/Backend/ContextRepository.cs rename to mROA/Implementation/Backend/InstanceRepository.cs index a18d15c..9b71859 100644 --- a/mROA/Implementation/Backend/ContextRepository.cs +++ b/mROA/Implementation/Backend/InstanceRepository.cs @@ -8,7 +8,7 @@ using mROA.Implementation.Attributes; namespace mROA.Implementation.Backend { - public class ContextRepository : IContextRepository + public class InstanceRepository : IInstanceRepository { public static object[] EventBinders = { }; @@ -22,7 +22,7 @@ namespace mROA.Implementation.Backend private IStorage _storage; - public ContextRepository() + public InstanceRepository() { _storage = new ExtensibleStorage(); } diff --git a/mROA/Implementation/Backend/MultiClientContextRepository.cs b/mROA/Implementation/Backend/MultiClientInstanceRepository.cs similarity index 79% rename from mROA/Implementation/Backend/MultiClientContextRepository.cs rename to mROA/Implementation/Backend/MultiClientInstanceRepository.cs index 8d63cd3..520e4cb 100644 --- a/mROA/Implementation/Backend/MultiClientContextRepository.cs +++ b/mROA/Implementation/Backend/MultiClientInstanceRepository.cs @@ -4,12 +4,12 @@ using mROA.Abstract; namespace mROA.Implementation.Backend { - public class MultiClientContextRepository : IContextRepository, IContextRepositoryHub + public class MultiClientInstanceRepository : IInstanceRepository, IContextRepositoryHub { - private readonly Func _produceRepository; - private readonly Dictionary _repositories = new(); + private readonly Func _produceRepository; + private readonly Dictionary _repositories = new(); - public MultiClientContextRepository(Func produceRepository) + public MultiClientInstanceRepository(Func produceRepository) { _produceRepository = produceRepository; } @@ -50,7 +50,7 @@ namespace mROA.Implementation.Backend return repository.GetObjectIndex(o, context); } - public IContextRepository GetRepository(int clientId) + public IInstanceRepository GetRepository(int clientId) { var repository = GetRepositoryByClientId(clientId); return repository; @@ -61,7 +61,7 @@ namespace mROA.Implementation.Backend _repositories.Remove(clientId); } - private IContextRepository GetRepositoryByClientId(int clientId) + private IInstanceRepository GetRepositoryByClientId(int clientId) { if (_repositories.TryGetValue(clientId, out var repository)) return repository; diff --git a/mROA/Implementation/ComplexContextRepository.cs b/mROA/Implementation/ComplexInstanceRepository.cs similarity index 97% rename from mROA/Implementation/ComplexContextRepository.cs rename to mROA/Implementation/ComplexInstanceRepository.cs index b074da9..09be507 100644 --- a/mROA/Implementation/ComplexContextRepository.cs +++ b/mROA/Implementation/ComplexInstanceRepository.cs @@ -5,7 +5,7 @@ using mROA.Abstract; namespace mROA.Implementation { - public class ComplexContextRepository : IContextRepository + public class ComplexInstanceRepository : IInstanceRepository { private List>> _storages = new(); public static object[] EventBinders = { }; diff --git a/mROA/Implementation/EndPointContext.cs b/mROA/Implementation/EndPointContext.cs index 6962f86..1978f2c 100644 --- a/mROA/Implementation/EndPointContext.cs +++ b/mROA/Implementation/EndPointContext.cs @@ -6,8 +6,8 @@ namespace mROA.Implementation { public class EndPointContext : IEndPointContext { - public IContextRepository RealRepository { get; set; } - public IContextRepository RemoteRepository { get; set; } + public IInstanceRepository RealRepository { get; set; } + public IInstanceRepository RemoteRepository { get; set; } public int HostId { get; set; } public int OwnerId { get; set; } @@ -16,10 +16,10 @@ namespace mROA.Implementation { switch (dependency) { - case RemoteContextRepository remoteRepository: + case RemoteInstanceRepository remoteRepository: RemoteRepository = remoteRepository; break; - case ContextRepository realRepository: + case InstanceRepository realRepository: RealRepository = realRepository; break; } diff --git a/mROA/Implementation/RemoteContextRepository.cs b/mROA/Implementation/RemoteInstanceRepository.cs similarity index 97% rename from mROA/Implementation/RemoteContextRepository.cs rename to mROA/Implementation/RemoteInstanceRepository.cs index 9ab5dd8..1d00f42 100644 --- a/mROA/Implementation/RemoteContextRepository.cs +++ b/mROA/Implementation/RemoteInstanceRepository.cs @@ -5,7 +5,7 @@ using mROA.Abstract; namespace mROA.Implementation { - public class RemoteContextRepository : IContextRepository + public class RemoteInstanceRepository : IInstanceRepository { private List _producedRemoteEndpoints = new(); public static Dictionary RemoteTypes = new(); diff --git a/mROA/Implementation/SharedObjectShell.cs b/mROA/Implementation/SharedObjectShell.cs index 01305db..a9f5246 100644 --- a/mROA/Implementation/SharedObjectShell.cs +++ b/mROA/Implementation/SharedObjectShell.cs @@ -20,12 +20,14 @@ namespace mROA.Implementation { private ComplexObjectIdentifier _identifier = ComplexObjectIdentifier.Null; - private T _value; + private T? _value; // ReSharper disable once MemberCanBePrivate.Global // ReSharper disable once UnusedMember.Global public SharedObjectShellShell() { + _value = default; + EndPointContext = new EndPointContext(); } // ReSharper disable once UnusedMember.Global @@ -41,7 +43,7 @@ namespace mROA.Implementation // ReSharper disable once MemberCanBePrivate.Global public T Value { - get => _value; + get => _value!; set { _value = value; @@ -76,11 +78,11 @@ namespace mROA.Implementation public object UniversalValue { - get => _value; + get => _value!; set => _value = (T)value; } - private IContextRepository GetDefaultContextRepository() => + private IInstanceRepository GetDefaultContextRepository() => (_identifier.OwnerId == EndPointContext.HostId ? EndPointContext.RealRepository : EndPointContext.RemoteRepository) ?? diff --git a/mROA/Implementation/TransmissionConfig.cs b/mROA/Implementation/TransmissionConfig.cs deleted file mode 100644 index 013995a..0000000 --- a/mROA/Implementation/TransmissionConfig.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System; -using mROA.Abstract; - -namespace mROA.Implementation -{ -#pragma warning disable CS8618, CS9264 - public static class TransmissionConfig - { -#if TRACE - public static int TotalTransmittedBytes { get; set; } -#endif - // private static IContextRepository? _realContextRepository; - // private static IContextRepository? _remoteEndpointContextRepository; - // private static IOwnershipRepository? _ownershipRepository; - // - // public static IContextRepository RealContextRepository - // { - // get => _realContextRepository ?? throw new NullReferenceException("RealContextRepository is null"); - // set => _realContextRepository = value; - // } - // - // public static IContextRepository RemoteEndpointContextRepository - // { - // get => _remoteEndpointContextRepository ?? - // throw new NullReferenceException("RemoteEndpointContextRepository is null"); - // set => _remoteEndpointContextRepository = value; - // } - // - // public static IOwnershipRepository OwnershipRepository - // { - // get => _ownershipRepository ?? throw new NullReferenceException("OwnershipRepository is null"); - // set => _ownershipRepository = value; - // } - } -} \ No newline at end of file