public InitInstanceResult InitInstance(InitInstanceRequest initInstanceRequest, IsInfrastructureMessage handler = null) { var InstanceWrapper = new InstanceWrapper(); var result = InitInstance( initInstanceRequest.CallId, initInstanceRequest.TypeName, initInstanceRequest.AssemblyName, () => (IWorkerMessageService)(InstanceWrapper.Services = new InjectableMessageService(IsInfrastructureMessage(handler)))); InstanceWrapper.Instance = result.Instance; if (result.IsSuccess) { instances[initInstanceRequest.Id] = InstanceWrapper; } else { InstanceWrapper.Dispose(); } return(result); }
public InjectableMessageService(IsInfrastructureMessage isInfrastructureMessage) { MessageService.Message += OnIncomingMessage; this.isInfrastructureMessage = isInfrastructureMessage; }
private static IsInfrastructureMessage IsInfrastructureMessage(IsInfrastructureMessage handler) { return(message => message.StartsWith(MessagePrefix) || (handler?.Invoke(message)).GetValueOrDefault(false)); }