MessageBoard: Add persistence to chat messages.

This commit is contained in:
2015-06-06 01:54:16 +02:00
parent 12744fc0a0
commit 651e79675b
2 changed files with 72 additions and 13 deletions

View File

@@ -6,8 +6,26 @@ namespace Scrummer.Code.BusinessLogic
{
public class MessageBoard
{
#region Declarations
private List<Message> _messages = new List<Message>();
private int lastIDMessage = 0;
private int _lastIDMessage = 0;
private int _idBoard = 0;
#endregion
#region Life cycle
public MessageBoard(int idBoard)
{
_idBoard = idBoard;
LoadData();
}
#endregion
#region Public methods
public List<Message> Messages_GetList(int idMessage)
{
@@ -19,24 +37,53 @@ namespace Scrummer.Code.BusinessLogic
{
listMessages.Insert(0, msg);
}
else
{
break;
}
else { break; }
}
return listMessages;
}
public void Message_Add(string userName, string text)
{
lastIDMessage++;
Message msg = new Message();
msg.IDMessage = lastIDMessage;
msg.UserName = userName;
msg.Text = text;
msg.Date = DateTime.UtcNow;
_messages.Insert(0, msg);
lock (_messages)
{
_lastIDMessage++;
Message msg = new Message();
msg.IDMessage = _lastIDMessage;
msg.UserName = userName;
msg.Text = text;
msg.Date = DateTime.UtcNow;
_messages.Insert(0, msg);
SaveData();
}
}
#endregion
#region Private methods
#region Persistence
private const string PersistenceFile = "priv/messageBoard.{0}.json";
private void LoadData()
{
_messages = Persistence.LoadList<Message>(String.Format(PersistenceFile, _idBoard));
_lastIDMessage = 0;
if (_messages.Count > 0)
{
_lastIDMessage = _messages[0].IDMessage;
}
}
private void SaveData()
{
Persistence.SaveList(String.Format(PersistenceFile, _idBoard), _messages);
}
#endregion
#endregion
}
}

View File

@@ -51,6 +51,18 @@ namespace Scrummer.Code
bool mustWait = (timePoolData > 0);
do
{
if (_chatBoards.ContainsKey(idBoard) == false)
{
lock (_chatBoards)
{
if (_chatBoards.ContainsKey(idBoard) == false)
{
messageBoard = new MessageBoard(idBoard);
_chatBoards[idBoard] = messageBoard;
}
}
}
if (_chatBoards.ContainsKey(idBoard))
{
messageBoard = _chatBoards[idBoard];
@@ -86,7 +98,7 @@ namespace Scrummer.Code
}
else
{
messageBoard = new MessageBoard();
messageBoard = new MessageBoard(idBoard);
_chatBoards[idBoard] = messageBoard;
}
messageBoard.Message_Add(userName, text);