public static void CreateMessage(Models.MessageEntity entity) { Contracts.MessageContract contract = new Contracts.MessageContract(entity.RowKey, entity.PartitionKey); TableClient client = new TableClient(_TableName); QueueClient qclient = new QueueClient(); Console.WriteLine("Inserting Entity"); entity.ModifiedOn = System.DateTime.Now.ToString(); client.InsertRow(entity); Console.WriteLine("Inserting Queue Msg"); qclient.Send(contract); }
/// <summary> /// Notifies a new incoming <see cref="Message"/>. /// </summary> /// <param name="message">The <see cref="Message"/>.</param> public void NotifyNewMessage(Message message) { if (message == null) { throw new ArgumentNullException(paramName: nameof(message)); } var contract = new Contracts.MessageContract { OwnerId = message.OwnerId, Content = message.Content, DateTime = message.DateTime }; foreach (var client in this.clients) { this.SendMessage(connection: client.Key, message: contract); } }
/// <summary> /// Receives a new message from a client socket. /// </summary> /// <param name="connection">The <see cref="IWebSocketConnection"/>.</param> /// <param name="message">The incoming message.</param> private void OnNewMessage(IWebSocketConnection connection, string message) { if (connection == null) { throw new ArgumentNullException(paramName: nameof(connection)); } if (string.IsNullOrEmpty(value: message)) { throw new ArgumentNullException(paramName: nameof(message)); } if (!this.clients.ContainsKey(key: connection)) { if (!this.clients.Values.Any(predicate: item => string.Equals(a: item.Item1, b: message, comparisonType: StringComparison.OrdinalIgnoreCase))) { if (!this.dataStore.UserExist(userName: message)) { var answer = new Contracts.MessageContract { Content = "User not found", DateTime = DateTime.UtcNow }; this.SendMessage(connection: connection, message: answer); connection.Close(); return; } var user = this.dataStore.LoadUser(userName: message); var client = new Tuple <string, int>(item1: message, item2: user.UserId); this.clients.AddOrUpdate( key: connection, addValue: client, updateValueFactory: (key, oldValue) => client); this.logger.Format( SeverityLevel.Info, "Client connected on address {0} has name {1}.", connection.ConnectionInfo.ClientIpAddress, message); this.NotifyUserStateChange(userId: user.UserId, state: UserState.Online); } } }