public static RiderMessage[] GetMessages(string userId,string raceId) { List<RiderMessage> messages = new List<RiderMessage>(); SQLiteDatabase db = new SQLiteDatabase(); string sql = "select m.RaceId, u.userid,u.username, m.message, m.SendTime " + "from cycli_rider_messages m, cycli_riders u " + "where m.SenderId = u.UserId and " + "m.RaceId = @r " + "order by m.SendTime"; DataTable dt = db.GetDataTable(sql,"@r",raceId, "@t", "fromTime"); db.Close(); foreach (DataRow dr in dt.Rows) { RiderMessage message = new RiderMessage(); message.SenderId = (string)dr["userid"]; message.Sender = (string)dr["username"]; message.RaceId = (string)dr["RaceId"]; message.Message = (string)dr["Message"]; message.SendTime = (long)(int)dr["SendTime"]; messages.Add(message); } return messages.ToArray(); }
public static void SendMessage(string userId, string raceId, string message) { UserRider sender = UserRider.Load(userId); Race race = Race.Load(raceId); RiderMessage rm = new RiderMessage { Sender = sender.UserName, SenderId = userId, RaceId = raceId, Message = message, SendTime = Utilities.DbTime.ToDbSecs(DateTime.UtcNow) }; // Save to db rm.Save(); RiderMessage[] rms = new RiderMessage[] { rm }; CycliManager.Instance.SendRiderMessages(race, rms); }
public void SendRiderMessages(Race race, RiderMessage[] rms) { try { _ConnectionProcessLock.EnterReadLock(); // Is the user connection foreach (Race.Participant p in race.UserParticipants) { string connectionId; if (_connections.TryGetValue(p.UserId, out connectionId)) { Context.Clients.Client(connectionId).receiveMessages(rms); } } } finally { _ConnectionProcessLock.ExitReadLock(); } }