public void EndSession ()
{
if (session_messages == null)
return;
//
// Handles the first session
//
if (common_messages == null) {
common_messages = new List<AbstractMessage> (session_messages);
merged_messages = session_messages;
session_messages = null;
return;
}
//
// Store common messages if any
//
for (int i = 0; i < common_messages.Count; ++i) {
AbstractMessage cmsg = common_messages[i];
bool common_msg_found = false;
foreach (AbstractMessage msg in session_messages) {
if (cmsg.Equals (msg)) {
common_msg_found = true;
break;
}
}
if (!common_msg_found)
common_messages.RemoveAt (i);
}
//
// Merge session and previous messages
//
for (int i = 0; i < session_messages.Count; ++i) {
AbstractMessage msg = session_messages[i];
bool msg_found = false;
for (int ii = 0; ii < merged_messages.Count; ++ii) {
if (msg.Equals (merged_messages[ii])) {
msg_found = true;
break;
}
}
if (!msg_found)
merged_messages.Add (msg);
}
}