コード例 #1
0
        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);
        }
コード例 #2
0
 public InjectableMessageService(IsInfrastructureMessage isInfrastructureMessage)
 {
     MessageService.Message      += OnIncomingMessage;
     this.isInfrastructureMessage = isInfrastructureMessage;
 }
コード例 #3
0
 private static IsInfrastructureMessage IsInfrastructureMessage(IsInfrastructureMessage handler)
 {
     return(message => message.StartsWith(MessagePrefix) ||
            (handler?.Invoke(message)).GetValueOrDefault(false));
 }