Причесывание кода
This commit is contained in:
@@ -88,10 +88,11 @@ namespace mROA.Implementation.Backend
|
||||
{
|
||||
try
|
||||
{
|
||||
var finalResult = currentCommand.Invoke(context, parameter is null
|
||||
var finalParameter = parameter is null
|
||||
? Array.Empty<object>()
|
||||
: new[]
|
||||
{ parameter });
|
||||
{ parameter };
|
||||
var finalResult = currentCommand.Invoke(context, finalParameter);
|
||||
|
||||
return new TypedFinalCommandExecution
|
||||
{
|
||||
@@ -120,10 +121,11 @@ namespace mROA.Implementation.Backend
|
||||
token.Register(() => Console.WriteLine($"Cancellation requested check {command.Id}"));
|
||||
try
|
||||
{
|
||||
var result = (Task)currentCommand.Invoke(context, parameter is null
|
||||
var finalParameter = parameter is null
|
||||
? new object[] { token }
|
||||
: new[]
|
||||
{ parameter, token })!;
|
||||
{ parameter, token };
|
||||
var result = (Task)currentCommand.Invoke(context, finalParameter)!;
|
||||
|
||||
|
||||
result.ContinueWith(_ =>
|
||||
@@ -140,6 +142,7 @@ namespace mROA.Implementation.Backend
|
||||
|
||||
var multiClientOwnershipRepository =
|
||||
TransmissionConfig.OwnershipRepository as MultiClientOwnershipRepository;
|
||||
|
||||
multiClientOwnershipRepository?.RegisterOwnership(representationModule.Id);
|
||||
representationModule.PostCallMessage(command.Id, MessageType.FinishedCommandExecution, payload);
|
||||
multiClientOwnershipRepository?.FreeOwnership();
|
||||
@@ -170,11 +173,12 @@ namespace mROA.Implementation.Backend
|
||||
var token = tokenSource.Token;
|
||||
try
|
||||
{
|
||||
var finalParameter = parameter is null
|
||||
? new object[] { token }
|
||||
: new[]
|
||||
{ parameter, token };
|
||||
var result =
|
||||
(Task)currentCommand.Invoke(context, parameter is null
|
||||
? new object[] { token }
|
||||
: new[]
|
||||
{ parameter, token })!;
|
||||
(Task)currentCommand.Invoke(context, finalParameter)!;
|
||||
|
||||
result.ContinueWith(t =>
|
||||
{
|
||||
|
||||
@@ -76,7 +76,7 @@ namespace mROA.Implementation.Backend
|
||||
|
||||
public object GetSingleObject(Type type)
|
||||
{
|
||||
return _singletons!.GetValueOrDefault(type.GetHashCode()) ?? throw new ArgumentException("Unregistered singleton type");
|
||||
return _singletons.GetValueOrDefault(type.GetHashCode()) ?? throw new ArgumentException("Unregistered singleton type");
|
||||
}
|
||||
|
||||
public int GetObjectIndex(object o)
|
||||
|
||||
@@ -29,42 +29,50 @@ namespace mROA.Implementation.Backend
|
||||
|
||||
public int ResisterObject(object o)
|
||||
{
|
||||
return GetRepositoryByClientId(TransmissionConfig.OwnershipRepository.GetOwnershipId()).ResisterObject(o);
|
||||
var repository = GetRepositoryByClientId(TransmissionConfig.OwnershipRepository.GetOwnershipId());
|
||||
return repository.ResisterObject(o);
|
||||
}
|
||||
|
||||
public void ClearObject(int id)
|
||||
{
|
||||
GetRepositoryByClientId(TransmissionConfig.OwnershipRepository.GetOwnershipId()).ClearObject(id);
|
||||
var repository = GetRepositoryByClientId(TransmissionConfig.OwnershipRepository.GetOwnershipId());
|
||||
repository.ClearObject(id);
|
||||
}
|
||||
|
||||
public T GetObjectBySharedObject<T>(SharedObject<T> sharedObject)
|
||||
{
|
||||
return GetRepository(sharedObject.OwnerId).GetObject<T>(sharedObject.ContextId);
|
||||
var repository = GetRepository(sharedObject.OwnerId);
|
||||
return repository.GetObject<T>(sharedObject.ContextId);
|
||||
}
|
||||
|
||||
public object GetObject(int id)
|
||||
{
|
||||
return GetRepositoryByClientId(TransmissionConfig.OwnershipRepository.GetOwnershipId()).GetObject<object>(id);
|
||||
var repository = GetRepositoryByClientId(TransmissionConfig.OwnershipRepository.GetOwnershipId());
|
||||
return repository.GetObject<object>(id);
|
||||
}
|
||||
|
||||
public T? GetObject<T>(int id)
|
||||
{
|
||||
return GetRepositoryByClientId(TransmissionConfig.OwnershipRepository.GetOwnershipId()).GetObject<T>(id);
|
||||
var repository = GetRepositoryByClientId(TransmissionConfig.OwnershipRepository.GetOwnershipId());
|
||||
return repository.GetObject<T>(id);
|
||||
}
|
||||
|
||||
public object GetSingleObject(Type type)
|
||||
{
|
||||
return GetRepositoryByClientId(TransmissionConfig.OwnershipRepository.GetOwnershipId()).GetSingleObject(type);
|
||||
var repository = GetRepositoryByClientId(TransmissionConfig.OwnershipRepository.GetOwnershipId());
|
||||
return repository.GetSingleObject(type);
|
||||
}
|
||||
|
||||
public int GetObjectIndex(object o)
|
||||
{
|
||||
return GetRepositoryByClientId(TransmissionConfig.OwnershipRepository.GetOwnershipId()).GetObjectIndex(o);
|
||||
var repository = GetRepositoryByClientId(TransmissionConfig.OwnershipRepository.GetOwnershipId());
|
||||
return repository.GetObjectIndex(o);
|
||||
}
|
||||
|
||||
public IContextRepository GetRepository(int clientId)
|
||||
{
|
||||
return GetRepositoryByClientId(clientId);
|
||||
var repository = GetRepositoryByClientId(clientId);
|
||||
return repository;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -33,8 +33,9 @@ namespace mROA.Implementation
|
||||
|
||||
foreach (var creationModule in _creationModules)
|
||||
produced.Inject(creationModule);
|
||||
|
||||
produced.Inject(_hub.GetInteracion(id));
|
||||
|
||||
var interaction = _hub.GetInteracion(id);
|
||||
produced.Inject(interaction);
|
||||
|
||||
return produced;
|
||||
}
|
||||
|
||||
@@ -45,7 +45,9 @@ namespace mROA.Implementation.Frontend
|
||||
throw new Exception($"Incorrect message type. Must be IdAssigning, current : {welcomeMessage.SchemaId.ToString()}");
|
||||
}
|
||||
|
||||
TransmissionConfig.OwnershipRepository = new StaticOwnershipRepository(_serialization.Deserialize<IdAssingnment>(welcomeMessage.Data)!.Id);
|
||||
|
||||
var assignment = _serialization.Deserialize<IdAssingnment>(welcomeMessage.Data)!;
|
||||
TransmissionConfig.OwnershipRepository = new StaticOwnershipRepository(assignment.Id);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -91,7 +91,8 @@ namespace mROA.Implementation.Frontend
|
||||
|
||||
if (request.Parameter is not null)
|
||||
{
|
||||
var parameterType = _methodRepository!.GetMethod(request.CommandId).GetParameters().First()
|
||||
var method = _methodRepository!.GetMethod(request.CommandId);
|
||||
var parameterType = method.GetParameters().First()
|
||||
.ParameterType;
|
||||
|
||||
request.Parameter = _serializationToolkit.Cast(request.Parameter, parameterType);
|
||||
|
||||
@@ -51,7 +51,8 @@ namespace mROA.Implementation
|
||||
|
||||
|
||||
var rawMessage = _serialization.Serialize(message);
|
||||
await BaseStream.WriteAsync(BitConverter.GetBytes((ushort)rawMessage.Length).AsMemory(0, sizeof(ushort)));
|
||||
var header = BitConverter.GetBytes((ushort)rawMessage.Length).AsMemory(0, sizeof(ushort));
|
||||
await BaseStream.WriteAsync(header);
|
||||
await BaseStream.WriteAsync(rawMessage);
|
||||
}
|
||||
|
||||
|
||||
@@ -25,8 +25,9 @@ namespace mROA.Implementation
|
||||
throw new NullReferenceException("representation producer is not initialized");
|
||||
|
||||
if (!RemoteTypes.TryGetValue(typeof(T), out var remoteType)) throw new NotSupportedException();
|
||||
var representationModule = _representationProducer.Produce(sharedObject.OwnerId);
|
||||
var remote = (T)Activator.CreateInstance(remoteType, sharedObject.ContextId,
|
||||
_representationProducer.Produce(sharedObject.OwnerId))!;
|
||||
representationModule)!;
|
||||
return remote;
|
||||
}
|
||||
|
||||
@@ -41,8 +42,9 @@ namespace mROA.Implementation
|
||||
throw new NullReferenceException("representation producer is not initialized");
|
||||
|
||||
if (!RemoteTypes.TryGetValue(typeof(T), out var remoteType)) throw new NotSupportedException();
|
||||
var representationModule = _representationProducer.Produce(TransmissionConfig.OwnershipRepository.GetOwnershipId());
|
||||
var remote = (T)Activator.CreateInstance(remoteType, id,
|
||||
_representationProducer.Produce(TransmissionConfig.OwnershipRepository.GetOwnershipId()))!;
|
||||
representationModule)!;
|
||||
return remote;
|
||||
}
|
||||
|
||||
@@ -51,8 +53,9 @@ namespace mROA.Implementation
|
||||
if (_representationProducer == null)
|
||||
throw new NullReferenceException("representation producer is not initialized");
|
||||
|
||||
var representationModule = _representationProducer.Produce(TransmissionConfig.OwnershipRepository.GetOwnershipId());
|
||||
return Activator.CreateInstance(RemoteTypes[type], -1,
|
||||
_representationProducer.Produce(TransmissionConfig.OwnershipRepository.GetOwnershipId()))!;
|
||||
representationModule)!;
|
||||
}
|
||||
|
||||
public int GetObjectIndex(object o)
|
||||
|
||||
@@ -27,6 +27,7 @@ namespace mROA.Implementation
|
||||
{
|
||||
var request = new DefaultCallRequest
|
||||
{ CommandId = methodId, ObjectId = _id, Parameter = parameter, ParameterType = parameter?.GetType() };
|
||||
|
||||
await _representationModule.PostCallMessageAsync(request.Id, MessageType.CallRequest, request);
|
||||
|
||||
var localTokenSource = new CancellationTokenSource();
|
||||
|
||||
@@ -29,16 +29,18 @@ namespace mROA.Implementation
|
||||
{
|
||||
if (_serialization == null)
|
||||
throw new NullReferenceException("Serialization toolkit is not initialized");
|
||||
|
||||
return _serialization.Deserialize<T>(await GetRawMessage(requestId, messageType, token))!;
|
||||
|
||||
var rawMessage = await GetRawMessage(requestId, messageType, token);
|
||||
return _serialization.Deserialize<T>(rawMessage)!;
|
||||
}
|
||||
|
||||
public T GetMessage<T>(Guid? requestId = null, MessageType? messageType = null)
|
||||
{
|
||||
if (_serialization == null)
|
||||
throw new NullReferenceException("Serialization toolkit is not initialized");
|
||||
|
||||
return _serialization.Deserialize<T>(GetRawMessage(requestId, messageType).GetAwaiter().GetResult())!;
|
||||
|
||||
var rawMessage = GetRawMessage(requestId, messageType).GetAwaiter().GetResult();
|
||||
return _serialization.Deserialize<T>(rawMessage)!;
|
||||
}
|
||||
|
||||
public async Task<byte[]> GetRawMessage(Guid? requestId = null, MessageType? messageType = null, CancellationToken token = default)
|
||||
@@ -82,9 +84,10 @@ namespace mROA.Implementation
|
||||
throw new NullReferenceException("Serialization toolkit is not initialized");
|
||||
|
||||
Console.WriteLine($"Posting message: {id} - {messageType}");
|
||||
|
||||
|
||||
var serialized = _serialization.Serialize(payload, payloadType);
|
||||
await _interaction.PostMessage(new NetworkMessage
|
||||
{ Id = id, SchemaId = messageType, Data = _serialization.Serialize(payload, payloadType) });
|
||||
{ Id = id, SchemaId = messageType, Data = serialized });
|
||||
}
|
||||
|
||||
public void PostCallMessage<T>(Guid id, MessageType messageType, T payload) where T : notnull
|
||||
|
||||
@@ -73,7 +73,7 @@ namespace mROA.Implementation
|
||||
set
|
||||
{
|
||||
_contextId = value;
|
||||
Value = GetDefaultContextRepository().GetObjectBySharedObject<T>(this)!;
|
||||
Value = GetDefaultContextRepository().GetObjectBySharedObject(this);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user