Update of /cvsroot/asterisk-java/asterisk-java/src/java/net/sf/asterisk/manager
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16160/src/java/net/sf/asterisk/manager
Modified Files:
DefaultAsteriskManager.java Queue.java
Log Message:
Fixed updating of queue entries (AJ-1)
Added toString() to Queue
Index: DefaultAsteriskManager.java
===================================================================
RCS file: /cvsroot/asterisk-java/asterisk-java/src/java/net/sf/asterisk/manager/DefaultAsteriskManager.java,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -d -p -r1.20 -r1.21
--- DefaultAsteriskManager.java 16 Aug 2005 00:25:43 -0000 1.20
+++ DefaultAsteriskManager.java 21 Aug 2005 22:39:21 -0000 1.21
@@ -33,6 +33,8 @@ import net.sf.asterisk.manager.action.St
import net.sf.asterisk.manager.event.ConnectEvent;
import net.sf.asterisk.manager.event.DisconnectEvent;
import net.sf.asterisk.manager.event.HangupEvent;
+import net.sf.asterisk.manager.event.JoinEvent;
+import net.sf.asterisk.manager.event.LeaveEvent;
import net.sf.asterisk.manager.event.LinkEvent;
import net.sf.asterisk.manager.event.ManagerEvent;
import net.sf.asterisk.manager.event.NewCallerIdEvent;
@@ -415,6 +417,14 @@ public class DefaultAsteriskManager
{
handleHangupEvent((HangupEvent) event);
}
+ else if (event instanceof JoinEvent)
+ {
+ handleJoinEvent((JoinEvent) event);
+ }
+ else if (event instanceof LeaveEvent)
+ {
+ handleLeaveEvent((LeaveEvent) event);
+ }
}
/* Private helper methods */
@@ -603,6 +613,54 @@ public class DefaultAsteriskManager
}
}
+ protected void handleJoinEvent(JoinEvent event)
+ {
+ Queue queue = (Queue) queues.get(event.getQueue());
+ Channel channel = getChannelByName(event.getChannel());
+
+ if (queue == null)
+ {
+ logger.error("ignored JoinEvent for unknown queue "
+ + event.getQueue());
+ return;
+ }
+ if (channel == null)
+ {
+ logger.error("ignored JoinEvent for unknown channel "
+ + event.getChannel());
+ return;
+ }
+
+ if (!queue.getEntries().contains(channel))
+ {
+ queue.addEntry(channel);
+ }
+ }
+
+ protected void handleLeaveEvent(LeaveEvent event)
+ {
+ Queue queue = (Queue) queues.get(event.getQueue());
+ Channel channel = getChannelByName(event.getChannel());
+
+ if (queue == null)
+ {
+ logger.error("ignored LeaveEvent for unknown queue "
+ + event.getQueue());
+ return;
+ }
+ if (channel == null)
+ {
+ logger.error("ignored LeaveEvent for unknown channel "
+ + event.getChannel());
+ return;
+ }
+
+ if (queue.getEntries().contains(channel))
+ {
+ queue.removeEntry(channel);
+ }
+ }
+
/**
* Returns a channel by its name.
*
Index: Queue.java
===================================================================
RCS file: /cvsroot/asterisk-java/asterisk-java/src/java/net/sf/asterisk/manager/Queue.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -p -r1.2 -r1.3
--- Queue.java 23 Feb 2005 22:50:57 -0000 1.2
+++ Queue.java 21 Aug 2005 22:39:22 -0000 1.3
@@ -70,4 +70,18 @@ public class Queue implements Serializab
{
entries.remove(entry);
}
+
+ public String toString()
+ {
+ StringBuffer sb;
+
+ sb = new StringBuffer(getClass().getName() + ": ");
+
+ sb.append("name='" + getName() + "'; ");
+ sb.append("max='" + getMax() + "'; ");
+ sb.append("entries='" + getEntries() + "'; ");
+ sb.append("systemHashcode=" + System.identityHashCode(this));
+
+ return sb.toString();
+ }
}
|