Ejemplo n.º 1
0
 public ServiceMessageEventArgs(ServiceMessageEventArgs parentArgs, SSSBMessage message)
 {
     _message      = message ?? parentArgs.Message;
     _service      = parentArgs._service;
     _token        = parentArgs._token;
     _taskID       = parentArgs._taskID;
     _serviceScope = parentArgs._serviceScope;
     _tcs          = parentArgs._tcs;
     _completion   = parentArgs._completion;
     _services     = parentArgs._services;
 }
Ejemplo n.º 2
0
        private Func <Task> _GetMessageHandler(SqlConnection dbconnection, SSSBMessage message, CancellationToken token)
        {
            IMessageHandler <ServiceMessageEventArgs> messageHandler;

            // if we registered custom handlers for predefined message types
            if (_messageHandlers.TryGetValue(message.MessageType, out messageHandler))
            {
                return(async() =>
                {
                    ServiceMessageEventArgs serviceArgs = this.CreateServiceMessageEventArgs(message, token);
                    try
                    {
                        var customHandlerFactory = serviceArgs.Services.GetRequiredService <ICustomMessageHandlerFactory>();
                        var customHandler = customHandlerFactory.Create(serviceArgs);
                        await customHandler.HandleMessage(dbconnection, messageHandler, serviceArgs);
                    }
                    catch (Exception ex)
                    {
                        serviceArgs.TaskCompletionSource.TrySetException(ex);
                        throw;
                    }
                });
            }
            else if (message.MessageType == SSSBMessage.EndDialogMessageType)
            {
                return(() => _standardMessageHandlers.EndDialogMessageHandler(dbconnection, message));
            }
            else if (message.MessageType == SSSBMessage.ErrorMessageType)
            {
                return(() => _standardMessageHandlers.ErrorMessageHandler(dbconnection, message));
            }
            else if (message.MessageType == SSSBMessage.EchoMessageType && message.ContractName == EchoContractName)
            {
                return(() => _standardMessageHandlers.EchoMessageHandler(dbconnection, message));
            }
            else
            {
                string err = string.Format(ServiceBrokerResources.UnknownMessageTypeErrMsg, message.MessageType);
                return(() => _standardMessageHandlers.EndDialogMessageWithErrorHandler(dbconnection, message, err, 1));
            }
        }
Ejemplo n.º 3
0
        protected virtual ServiceMessageEventArgs CreateServiceMessageEventArgs(SSSBMessage message, CancellationToken cancellation)
        {
            ServiceMessageEventArgs args = new ServiceMessageEventArgs(message, this._sssbService, cancellation, _services.CreateScope());

            return(args);
        }