Example #1
0
        /// <summary>
        /// Start a new conversation
        /// </summary>
        public virtual IServiceResponse StartConversation(IServiceRequestWithData <Guid, StartConversationParameters> serviceRequest)
        {
            AuthenticationTokenHelper.SetAuthenticationToken(serviceRequest.AuthenticationToken);
            CorrelationIdHelper.SetCorrelationId(serviceRequest.CorrelationId);

            var responseData = new ServiceResponse
            {
                State = ServiceResponseStateType.FailedValidation
            };

            if (string.IsNullOrWhiteSpace(serviceRequest.Data.Name))
            {
                return(CompleteResponse(responseData));
            }

            var command = new StartConversation
            {
                Name = serviceRequest.Data.Name
            };

            try
            {
                CommandPublisher.Publish(command);

                responseData.State = ServiceResponseStateType.Succeeded;
            }
            catch (Exception)
            {
                responseData.State = ServiceResponseStateType.Unknown;
            }

            // Complete the response
            return(CompleteResponse(responseData));
        }
Example #2
0
        public virtual HttpResponseMessage <ServiceResponse> StartConversation([FromBody] string name)
        {
            var responseData = new ServiceResponse
            {
                State = ServiceResponseStateType.FailedValidation
            };

            if (string.IsNullOrWhiteSpace(name))
            {
                return(CompleteResponseWithData(responseData));
            }

            var command = new StartConversation
            {
                Name = name
            };

            try
            {
                CommandPublisher.Publish(command);

                responseData.State = ServiceResponseStateType.Succeeded;
            }
            catch (Exception)
            {
                responseData.State = ServiceResponseStateType.Unknown;
            }

            // Complete the response
            return(CompleteResponseWithData(responseData));
        }
        private void Available()
        {
            if (_responseAggregator != null)
            {
                Stash.UnstashAll();

                _pendingRequest = null;
                Context.Stop(_responseAggregator);
                _responseAggregator = null;
            }

            Receive<StartConversation>(msg => StartNewOrLocateExistingConversation(msg));
            Receive<ConversationMessages.OutgoingChatMessage>(msg => RouteChatMessage(msg));
        }
Example #4
0
 public StartConversationWrapper(StartConversation sc)
 {
     line = sc;
 }
        private void StartNewOrLocateExistingConversation(StartConversation msg)
        {
            _pendingRequest = msg;

            if (_conversations.Count == 0)
            {
                UseNewConversation();
                return;
            }

            Become(Asking);

            _responseAggregator = Context.ActorOf(Props.Create(() => new ConversationLocationAggregatorActor(new HashSet<IActorRef>(_conversations.Values))));

            IEnumerable<Guid> participants = msg.Participants.Select(p => p.ClientId).ToList();
            _responseAggregator.Tell(new LocateConversation(participants), Self);
        }