Esempio n. 1
0
        public async Task <LightMessage> CreateMessageForUserAsync(string receiverUserName, string text, string senderUserName, string imgUrl = null)
        {
            if (!await IsUserNameExistsAsync(receiverUserName) || !await IsUserNameExistsAsync(senderUserName))
            {
                return(null);
            }

            User sender   = repository.GetUserByName(senderUserName);
            User receiver = repository.GetUserByName(receiverUserName);

            var message = new Message
            {
                SenderId   = sender.Id,
                ReceiverId = receiver.Id,
                Time       = DateTime.Now,
                Text       = text,
                ImgUrl     = imgUrl
            };

            await repository.SaveNewMessageAsync(message);

            LightMessage lightMessage = new LightMessage
            {
                Sender   = sender.Name,
                Receiver = receiver.Name,
                Text     = text,
                Time     = message.Time,
                ImgUrl   = message.ImgUrl
            };

            return(lightMessage);
        }
        public async Task <IActionResult> Index(FormModel form)
        {
            LightMessage message = await dataService.SaveNewImgMessageAsync(form);

            string senderConnectionId   = dataService.GetConnectionByUserName(message.Sender);
            string receiverConnectionId = dataService.GetConnectionByUserName(message.Receiver);

            await hubContext.Clients.Clients(senderConnectionId, receiverConnectionId).SendAsync("reciveMessage", message);

            return(Ok());
        }
Esempio n. 3
0
        public void ProcessMessage(LightMessage message)
        {
            switch (message)
            {
            case LightMessage.Reset:
                ChangeState(LightState.Red);
                break;

            case LightMessage.Next:
                switch (CurrentState)
                {
                case LightState.None:
                    ChangeState(LightState.Red);
                    break;

                case LightState.Red:
                    ChangeState(LightState.RedAmber);
                    break;

                case LightState.RedAmber:
                    ChangeState(LightState.Green);
                    break;

                case LightState.Green:
                    ChangeState(LightState.Amber);
                    break;

                case LightState.Amber:
                    ChangeState(LightState.Red);
                    break;

                default:
                    throw new ApplicationException("Unexpected state in RawTrafficLight::Next");
                }
                break;

            case LightMessage.Dance:
                throw new ApplicationException("Unexpected message in RawTrafficLight::Next");

            case LightMessage.OtherMessagesGoHere:
                throw new ApplicationException("Unexpected message in RawTrafficLight::Next");
            }
        }
Esempio n. 4
0
        public async Task <bool> SendMessageToUserAsync(string userName, string text)
        {
            User         sender  = dataService.GetUserByConnection(Context.ConnectionId);
            LightMessage message = await dataService.CreateMessageForUserAsync(userName, text, sender.Name);

            if (message == null)
            {
                return(false);
            }

            await Clients.Caller.SendAsync("reciveMessage", message);

            string connectionId = dataService.GetConnectionByUserName(message.Receiver);

            if (connectionId != null)
            {
                await Clients.Client(connectionId).SendAsync("reciveMessage", message);
            }

            return(true);
        }
Esempio n. 5
0
 public void ProcessMessage(LightMessage message)
 {
     _machine.EnqueueMessage(message);
 }
Esempio n. 6
0
 static void led(LightMessage l)
 {
 }