Example #1
0
        /// <summary>
        /// Отсылка сообщения
        /// </summary>
        private void SendMessage()
        {
            if (IsWhispering)
            {
                if (SelectedPerson == null)
                {
                    LogError("Не выбран пользователь для отправки сообщения");
                    return;
                }

                if (CurrentPerson.Equals(SelectedPerson))
                {
                    LogError("Нельзя отправлять личные сообщения самому себе");
                    return;
                }
            }

            Common.Messages.TextMessage mess = IsWhispering ?
                                               new Common.Messages.PersonalTextMessage(CurrentPerson, SelectedPerson, UserMessageText) :
                                               new Common.Messages.TextMessage(CurrentPerson, UserMessageText);

            OperationResult opRes = new OperationResult {
                Success = true
            };

            System.Threading.Tasks.Task.Factory.StartNew(() =>
            {
                try
                {
                    opRes = _communicationManager.SendMessage(IsWhispering, mess);
                }
                catch (Exception ex)
                {
                    opRes.Success      = false;
                    OperationError err = new OperationError();

                    ///Если при отсылке сообщения обнаруживается разрыв соединения с сервером завершаем подключение
                    if (ex.GetType() == typeof(System.ServiceModel.CommunicationObjectFaultedException))
                    {
                        err.ErrorMessage = "Не получилось соединиться с сервером";
                        Disconnect(shoudClearInfo: true);
                    }
                    else
                    {
                        err.ErrorMessage = ex.Message;
                    }

                    opRes.Errors.Add(err);
                }

                if (!opRes.Success)
                {
                    LogError(opRes);
                }
            });

            UserMessageText = string.Empty;
        }
        /// <summary>
        /// Отсылка сообщение к серверу
        /// </summary>
        /// <param name="isWhispering"></param>
        /// <param name="mess"></param>
        /// <returns></returns>
        public OperationResult SendMessage(bool isWhispering, Common.Messages.TextMessage mess)
        {
            OperationResult opRes = new OperationResult();

            //Если отправлется личное сообщение
            if (isWhispering)
            {
                opRes = _service.Whisper(mess as Common.Messages.PersonalTextMessage);
            }
            //Сообщение в общий чат
            else
            {
                opRes = _service.Say(mess);
            }

            return(opRes);
        }