- ArrayList session_messages;
- //
- // A collection of exactly same messages reported in all sessions
- //
- ArrayList common_messages;
-
- //
- // A collection of unique messages reported in all sessions
- //
- ArrayList merged_messages;
-
- public void EndSession ()
- {
- if (session_messages == null)
- return;
-
- //
- // Handles the first session
- //
- if (common_messages == null) {
- common_messages = new ArrayList (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 = (AbstractMessage) 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 = (AbstractMessage) 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;
- }
- }