ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/experimental/MNote/uk/org/iscream/mnote/MNoteProtocolHandler.java
Revision: 1.1
Committed: Thu Jun 14 09:16:08 2001 UTC (23 years, 5 months ago) by ajm
Branch: MAIN
CVS Tags: HEAD
Log Message:
initial checkin of the Multicast Notification System

File Contents

# User Rev Content
1 ajm 1.1 package uk.org.iscream.mnote;
2    
3     import java.util.Vector;
4    
5     class MNoteProtocolHandler {
6    
7     public void processMessage(String message) {
8     if (message.startsWith("REGISTER")) {
9     fireRegisterEvent(new RegisterEvent(message.substring(8)));
10     } else if (message.startsWith("NOTIFY")) {
11     fireNotificationEvent(new NotificationEvent(message.substring(6)));
12     }
13     }
14    
15     public void sendRegister(String name) {
16     fireSendEvent(new SendEvent("REGISTER" + name));
17     }
18    
19     public void sendNotification(String message) {
20     fireSendEvent(new SendEvent("NOTIFY" + message));
21     }
22    
23     public void addSendListener(SendListener listener) {
24     synchronized (_sendListeners) {
25     _sendListeners.add(listener);
26     }
27     }
28    
29     public void addRegisterListener(RegisterListener listener) {
30     synchronized (_registerListeners) {
31     _registerListeners.add(listener);
32     }
33     }
34    
35     public void addNotificationListener(NotificationListener listener) {
36     synchronized (_notificationListeners) {
37     _notificationListeners.add(listener);
38     }
39     }
40    
41     private void fireSendEvent(SendEvent se) {
42     if (_sendListeners.isEmpty()) {
43     return;
44     }
45    
46     Vector v;
47     synchronized (_sendListeners) {
48     v = (Vector) _sendListeners.clone();
49     }
50    
51     for ( int i = 0; i < v.size(); i++) {
52     SendListener sl = (SendListener) v.elementAt(i);
53     sl.acceptSendEvent(se);
54     }
55     }
56    
57     private void fireRegisterEvent(RegisterEvent re) {
58     if (_registerListeners.isEmpty()) {
59     return;
60     }
61    
62     Vector v;
63     synchronized (_registerListeners) {
64     v = (Vector) _registerListeners.clone();
65     }
66    
67     for ( int i = 0; i < v.size(); i++) {
68     RegisterListener rl = (RegisterListener) v.elementAt(i);
69     rl.acceptRegisterEvent(re);
70     }
71     }
72    
73     private void fireNotificationEvent(NotificationEvent ne) {
74     if (_notificationListeners.isEmpty()) {
75     return;
76     }
77    
78     Vector v;
79     synchronized (_notificationListeners) {
80     v = (Vector) _notificationListeners.clone();
81     }
82    
83     for ( int i = 0; i < v.size(); i++) {
84     NotificationListener nl = (NotificationListener) v.elementAt(i);
85     nl.acceptNotificationEvent(ne);
86     }
87     }
88    
89     private Vector _sendListeners = new Vector();
90     private Vector _registerListeners = new Vector();
91     private Vector _notificationListeners = new Vector();
92     }