asterisk-java-cvs Mailing List for Asterisk-Java Library (Page 99)
Brought to you by:
srt
You can subscribe to this list here.
2005 |
Jan
(4) |
Feb
(75) |
Mar
(211) |
Apr
(70) |
May
(12) |
Jun
(7) |
Jul
(96) |
Aug
(90) |
Sep
(11) |
Oct
(42) |
Nov
(45) |
Dec
(4) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2006 |
Jan
(20) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2007 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(32) |
Aug
|
Sep
(4) |
Oct
(2) |
Nov
(10) |
Dec
|
2008 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(4) |
Jul
(3) |
Aug
(73) |
Sep
(13) |
Oct
(4) |
Nov
(1) |
Dec
(7) |
2009 |
Jan
(1) |
Feb
(2) |
Mar
(48) |
Apr
(21) |
May
(14) |
Jun
(11) |
Jul
(9) |
Aug
(2) |
Sep
(11) |
Oct
(14) |
Nov
(6) |
Dec
(4) |
2010 |
Jan
(3) |
Feb
(2) |
Mar
|
Apr
|
May
(3) |
Jun
(3) |
Jul
|
Aug
|
Sep
|
Oct
(9) |
Nov
|
Dec
(12) |
2011 |
Jan
(1) |
Feb
(5) |
Mar
(7) |
Apr
(1) |
May
(1) |
Jun
|
Jul
|
Aug
(10) |
Sep
|
Oct
(5) |
Nov
|
Dec
|
2012 |
Jan
(3) |
Feb
|
Mar
(3) |
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
(3) |
Oct
|
Nov
(2) |
Dec
(2) |
2013 |
Jan
|
Feb
(2) |
Mar
(1) |
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
(3) |
Sep
|
Oct
(2) |
Nov
|
Dec
(1) |
2014 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
(1) |
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
(5) |
2015 |
Jan
(1) |
Feb
|
Mar
|
Apr
(25) |
May
(10) |
Jun
(4) |
Jul
(7) |
Aug
(4) |
Sep
(1) |
Oct
(1) |
Nov
(3) |
Dec
(1) |
2016 |
Jan
|
Feb
(42) |
Mar
(6) |
Apr
(15) |
May
(3) |
Jun
(1) |
Jul
(11) |
Aug
|
Sep
|
Oct
(17) |
Nov
(2) |
Dec
|
2017 |
Jan
|
Feb
(4) |
Mar
(1) |
Apr
(3) |
May
(2) |
Jun
(3) |
Jul
(7) |
Aug
(11) |
Sep
(5) |
Oct
(7) |
Nov
(4) |
Dec
(4) |
2018 |
Jan
(11) |
Feb
(11) |
Mar
(3) |
Apr
|
May
(9) |
Jun
(6) |
Jul
(17) |
Aug
(9) |
Sep
(2) |
Oct
(4) |
Nov
(3) |
Dec
(3) |
2019 |
Jan
(13) |
Feb
(1) |
Mar
(1) |
Apr
|
May
(5) |
Jun
|
Jul
(1) |
Aug
(6) |
Sep
|
Oct
|
Nov
(3) |
Dec
|
2020 |
Jan
(2) |
Feb
(72) |
Mar
(8) |
Apr
(11) |
May
(12) |
Jun
(3) |
Jul
(12) |
Aug
(3) |
Sep
(5) |
Oct
(4) |
Nov
|
Dec
(9) |
2021 |
Jan
|
Feb
(31) |
Mar
(6) |
Apr
(3) |
May
|
Jun
(2) |
Jul
|
Aug
(2) |
Sep
|
Oct
(9) |
Nov
|
Dec
(32) |
2022 |
Jan
(5) |
Feb
(7) |
Mar
(2) |
Apr
(3) |
May
|
Jun
|
Jul
(3) |
Aug
|
Sep
(2) |
Oct
(111) |
Nov
(105) |
Dec
(26) |
2023 |
Jan
(25) |
Feb
(6) |
Mar
(10) |
Apr
(54) |
May
(41) |
Jun
(24) |
Jul
(6) |
Aug
(11) |
Sep
(9) |
Oct
(8) |
Nov
(55) |
Dec
(34) |
2024 |
Jan
(6) |
Feb
(4) |
Mar
|
Apr
|
May
|
Jun
|
Jul
(2) |
Aug
(89) |
Sep
(48) |
Oct
(31) |
Nov
(9) |
Dec
(19) |
2025 |
Jan
(12) |
Feb
(18) |
Mar
(9) |
Apr
(7) |
May
|
Jun
(7) |
Jul
(7) |
Aug
(3) |
Sep
(22) |
Oct
(2) |
Nov
|
Dec
|
From: PY R. <par...@us...> - 2005-02-04 18:54:14
|
Update of /cvsroot/asterisk-java/asterisk-java/src/net/sf/asterisk/manager/event In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25685/src/net/sf/asterisk/manager/event Modified Files: ManagerEvent.java Log Message: Add new class : AsteriskServer to manage multiServers. Index: ManagerEvent.java =================================================================== RCS file: /cvsroot/asterisk-java/asterisk-java/src/net/sf/asterisk/manager/event/ManagerEvent.java,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -p -r1.10 -r1.11 --- ManagerEvent.java 31 Jan 2005 01:18:04 -0000 1.10 +++ ManagerEvent.java 4 Feb 2005 18:54:05 -0000 1.11 @@ -1,74 +1,75 @@ -/* - * (c) 2004 Stefan Reuter - * - * Created on Apr 23, 2004 - */ -package net.sf.asterisk.manager.event; - -import java.io.Serializable; -import java.util.Date; -import java.util.EventObject; - -import org.apache.commons.lang.builder.EqualsBuilder; -import org.apache.commons.lang.builder.HashCodeBuilder; -import org.apache.commons.lang.builder.ToStringBuilder; -import org.apache.commons.lang.builder.ToStringStyle; - -/** - * Abstract base class for all Events that can be received from the Asterisk - * server.<br> - * Events contain data pertaining to an event generated from within the Asterisk - * core or an extension module.<br> - * There is one conrete subclass of ManagerEvent per each supported Asterisk - * Event. - * - * @author srt - * @version $Id$ - */ -public abstract class ManagerEvent extends EventObject implements Serializable -{ - static final long serialVersionUID = 4299374743315152040L; - - private Date dateReceived; - - /** - * @param source - */ - public ManagerEvent(Object source) - { - super(source); - } - - /** - * Returns the point in time this event was received from the asterisk server.<br> - * Pseudo events that are not directly received from the asterisk server - * (for example ConnectEvent and DisconnectEvent) may return <code>null</code>. - */ - public Date getDateReceived() - { - return dateReceived; - } - - /** - * Sets the point in time this event was received from the asterisk server. - */ - public void setDateReceived(Date dateReceived) - { - this.dateReceived = dateReceived; - } - - public String toString() - { - return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE); - } - - public boolean equals(Object o) - { - return EqualsBuilder.reflectionEquals(this, o); - } - - public int hashCode() - { - return HashCodeBuilder.reflectionHashCode(this); - } +/* + * (c) 2004 Stefan Reuter + * + * Created on Apr 23, 2004 + */ +package net.sf.asterisk.manager.event; + +import java.io.Serializable; +import java.util.Date; +import java.util.EventObject; + +import org.apache.commons.lang.builder.EqualsBuilder; +import org.apache.commons.lang.builder.HashCodeBuilder; +import org.apache.commons.lang.builder.ToStringBuilder; +import org.apache.commons.lang.builder.ToStringStyle; + +/** + * Abstract base class for all Events that can be received from the Asterisk + * server.<br> + * Events contain data pertaining to an event generated from within the Asterisk + * core or an extension module.<br> + * There is one conrete subclass of ManagerEvent per each supported Asterisk + * Event. + * + * @author srt + * @version $Id$ + */ +public abstract class ManagerEvent extends EventObject implements Serializable +{ + static final long serialVersionUID = 4299374743315152040L; + + private Date dateReceived; + + /** + * @param source + */ + public ManagerEvent(Object source) + { + super(source); + + } + + /** + * Returns the point in time this event was received from the asterisk server.<br> + * Pseudo events that are not directly received from the asterisk server + * (for example ConnectEvent and DisconnectEvent) may return <code>null</code>. + */ + public Date getDateReceived() + { + return dateReceived; + } + + /** + * Sets the point in time this event was received from the asterisk server. + */ + public void setDateReceived(Date dateReceived) + { + this.dateReceived = dateReceived; + } + + public String toString() + { + return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE); + } + + public boolean equals(Object o) + { + return EqualsBuilder.reflectionEquals(this, o); + } + + public int hashCode() + { + return HashCodeBuilder.reflectionHashCode(this); + } } \ No newline at end of file |
From: PY R. <par...@us...> - 2005-02-04 18:54:14
|
Update of /cvsroot/asterisk-java/asterisk-java/src/net/sf/asterisk/manager In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25685/src/net/sf/asterisk/manager Modified Files: ManagerReader.java DefaultManagerConnection.java ManagerConnection.java Channel.java MultiAsterisksManager.java DefaultAsteriskManager.java Added Files: AsteriskServer.java Log Message: Add new class : AsteriskServer to manage multiServers. --- NEW FILE: AsteriskServer.java --- /* * Created on 3 févr. 2005 by Pierre-Yves ROGER. * */ package net.sf.asterisk.manager; import java.io.Serializable; /** * @author PY * net.sf.asterisk.manager, AsteriskServer.java */ public class AsteriskServer implements Serializable { /** * */ private String hostname = "localhost"; private int port = 5038 ; public AsteriskServer() { } public AsteriskServer(String hostname, int port) { this.hostname=hostname ; this.port=port ; } /** * @return Returns the hostname. */ public String getHostname() { return hostname; } /** * @param hostname The hostname to set. */ public void setHostname(String hostname) { this.hostname = hostname; } /** * @return Returns the port. */ public int getPort() { return port; } /** * @param port The port to set. */ public void setPort(int port) { this.port = port; } } Index: ManagerReader.java =================================================================== RCS file: /cvsroot/asterisk-java/asterisk-java/src/net/sf/asterisk/manager/ManagerReader.java,v retrieving revision 1.15 retrieving revision 1.16 diff -u -d -p -r1.15 -r1.16 --- ManagerReader.java 29 Jan 2005 10:59:57 -0000 1.15 +++ ManagerReader.java 4 Feb 2005 18:54:03 -0000 1.16 @@ -1,275 +1,275 @@ -/* - * (c) 2004 Stefan Reuter - * - * Created on Apr 22, 2004 - */ -package net.sf.asterisk.manager; - -import java.io.BufferedReader; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import net.sf.asterisk.manager.event.ManagerEvent; -import net.sf.asterisk.manager.response.ChallengeResponse; -import net.sf.asterisk.manager.response.CommandResponse; -import net.sf.asterisk.manager.response.ExtensionStateResponse; -import net.sf.asterisk.manager.response.MailboxCountResponse; -import net.sf.asterisk.manager.response.MailboxStatusResponse; -import net.sf.asterisk.manager.response.ManagerError; -import net.sf.asterisk.manager.response.ManagerResponse; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -/** - * The ManagerReader is a Thread that reads events and responses from an asterisk - * server, parses them to the corresponding ManagerEvent and ManagerResponse objects and - * dispatches them via the associated DefaultManagerConnection. - * <br> - * This class is intended to be used only by the DefaultManagerConnection. - * - * @see net.sf.asterisk.manager.event.ManagerEvent - * @see net.sf.asterisk.manager.response.ManagerResponse - * @see net.sf.asterisk.manager.DefaultManagerConnection - * - * @author srt - * @version $Id$ - */ -class ManagerReader extends Thread -{ - private Log log = LogFactory.getLog(getClass()); - - private static int threadCount = 0; - private EventBuilder eventBuilder; - private boolean die = false; - private BufferedReader reader; - private DefaultManagerConnection connection; - - ManagerReader(DefaultManagerConnection connection, BufferedReader reader) - { - int i = threadCount++; - setName("ManagerReader-" + i); - - this.connection = connection; - this.reader = reader; - - this.eventBuilder = new EventBuilder(); - } - - /** - * Reads line by line from the asterisk server, sets the protocol identifier - * as soon as it is received and dispatches the received - * events and responses via the associated connection. - * - * @see DefaultManagerConnection#dispatchEvent(ManagerEvent) - * @see DefaultManagerConnection#dispatchResponse(ManagerResponse) - * @see DefaultManagerConnection#setProtocolIdentifier(String) - */ - public void run() - { - String line; - List commandResult = new ArrayList(); - boolean processingCommandResult = false; - Map buffer = new HashMap(); - - try - { - while ((line = reader.readLine()) != null && !die) - { - // dirty hack for handling the CommandAction. Needs fix when manager protocol is enhanced. - if (processingCommandResult) - { - if ("--END COMMAND--".equals(line)) - { - CommandResponse commandResponse = new CommandResponse(); - - if (!commandResult.isEmpty() - && ((String) commandResult.get(0)).startsWith("ActionID")) - { - String tmp = (String) commandResult.get(0); - int delimiterIndex = tmp.indexOf(":"); - if (delimiterIndex > 0 && tmp.length() > delimiterIndex + 2) - { - commandResult.remove(0); - commandResponse.setActionId(tmp.substring(delimiterIndex + 2)); - } - } - commandResponse.setResponse("Follows"); - commandResponse.setDateReceived(new Date()); - commandResponse.setResult(commandResult); - connection.dispatchResponse(commandResponse); - commandResult = new ArrayList(); - processingCommandResult = false; - } - else - { - commandResult.add(line); - } - continue; - } - if ("Response: Follows".equalsIgnoreCase(line)) - { - processingCommandResult = true; - continue; - } - - // maybe we will find a better way to identify the protocol identifier but for now - // this works quite well. - if (line.startsWith("Asterisk Call Manager/") - && connection.getProtocolIdentifier() == null) - { - connection.setProtocolIdentifier(line); - continue; - } - - // an empty line indicates a normal response's or event's end so we build - // the corresponding value object and dispatch it through the ManagerConnection. - if (line.length() == 0) - { - if (buffer.containsKey("response")) - { - ManagerResponse response = buildResponse(buffer); - if (response != null) - { - connection.dispatchResponse(response); - } - } - else if (buffer.containsKey("event")) - { - ManagerEvent event = buildEvent(connection, buffer); - if (event != null) - { - connection.dispatchEvent(event); - } - } - - buffer.clear(); - } - else - { - int delimiterIndex; - - delimiterIndex = line.indexOf(":"); - if (delimiterIndex > 0 && line.length() > delimiterIndex + 2) - { - String name; - String value; - - name = line.substring(0, delimiterIndex).toLowerCase(); - value = line.substring(delimiterIndex + 2); - - buffer.put(name, value); - } - } - } - connection.handleDisconnection(); - } - catch (IOException e) - { - log.warn("IOException while reading from asterisk server, terminating thread.", e); - } - finally - { - log.info("Disconnected, closing reader"); - try - { - reader.close(); - } - catch (IOException ex) - { - log.warn("Unable to close reader", ex); - } - } - } - - public void die() - { - this.die = true; - } - - private ManagerResponse buildResponse(Map buffer) - { - ManagerResponse response; - String responseType = (String) buffer.get("response"); - - // determine type - if ("error".equals(responseType)) - { - response = new ManagerError(); - } - else if (buffer.containsKey("challenge")) - { - ChallengeResponse challengeResponse = new ChallengeResponse(); - challengeResponse.setChallenge((String) buffer.get("challenge")); - response = challengeResponse; - } - else if (buffer.containsKey("mailbox") && buffer.containsKey("waiting")) - { - MailboxStatusResponse mailboxStatusResponse = new MailboxStatusResponse(); - mailboxStatusResponse.setMailbox((String) buffer.get("mailbox")); - mailboxStatusResponse.setWaiting(new Integer((String) buffer.get("mailbox"))); - response = mailboxStatusResponse; - } - else if (buffer.containsKey("mailbox") && buffer.containsKey("newmessages") - && buffer.containsKey("oldmessages")) - { - MailboxCountResponse mailboxCountResponse = new MailboxCountResponse(); - mailboxCountResponse.setMailbox((String) buffer.get("mailbox")); - mailboxCountResponse.setNewMessages(new Integer((String) buffer.get("newmessages"))); - mailboxCountResponse.setOldMessages(new Integer((String) buffer.get("oldmessages"))); - response = mailboxCountResponse; - } - else if (buffer.containsKey("exten") && buffer.containsKey("context") - && buffer.containsKey("hint") && buffer.containsKey("status")) - { - ExtensionStateResponse extensionStateResponse = new ExtensionStateResponse(); - extensionStateResponse.setExten((String) buffer.get("exten")); - extensionStateResponse.setContext((String) buffer.get("context")); - extensionStateResponse.setHint((String) buffer.get("hint")); - extensionStateResponse.setStatus(new Integer((String) buffer.get("status"))); - response = extensionStateResponse; - } - else - { - response = new ManagerResponse(); - } - - // fill known attributes - response.setResponse(responseType); - - if (buffer.containsKey("actionid")) - { - response.setActionId((String) buffer.get("actionid")); - } - if (buffer.containsKey("message")) - { - response.setMessage((String) buffer.get("message")); - } - if (buffer.containsKey("uniqueid")) - { - response.setUniqueId((String) buffer.get("uniqueid")); - } - - response.setDateReceived(new Date()); - - return response; - } - - private ManagerEvent buildEvent(Object source, Map buffer) - { - ManagerEvent event; - - event = this.eventBuilder.buildEvent(source, buffer); - - if (event != null) - { - event.setDateReceived(new Date()); - } - - return event; - } +/* + * (c) 2004 Stefan Reuter + * + * Created on Apr 22, 2004 + */ +package net.sf.asterisk.manager; + +import java.io.BufferedReader; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import net.sf.asterisk.manager.event.ManagerEvent; +import net.sf.asterisk.manager.response.ChallengeResponse; +import net.sf.asterisk.manager.response.CommandResponse; +import net.sf.asterisk.manager.response.ExtensionStateResponse; +import net.sf.asterisk.manager.response.MailboxCountResponse; +import net.sf.asterisk.manager.response.MailboxStatusResponse; +import net.sf.asterisk.manager.response.ManagerError; +import net.sf.asterisk.manager.response.ManagerResponse; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * The ManagerReader is a Thread that reads events and responses from an asterisk + * server, parses them to the corresponding ManagerEvent and ManagerResponse objects and + * dispatches them via the associated DefaultManagerConnection. + * <br> + * This class is intended to be used only by the DefaultManagerConnection. + * + * @see net.sf.asterisk.manager.event.ManagerEvent + * @see net.sf.asterisk.manager.response.ManagerResponse + * @see net.sf.asterisk.manager.DefaultManagerConnection + * + * @author srt + * @version $Id$ + */ +class ManagerReader extends Thread +{ + private Log log = LogFactory.getLog(getClass()); + + private static int threadCount = 0; + private EventBuilder eventBuilder; + private boolean die = false; + private BufferedReader reader; + private DefaultManagerConnection connection; + + ManagerReader(DefaultManagerConnection connection, BufferedReader reader) + { + int i = threadCount++; + setName("ManagerReader-" + i); + + this.connection = connection; + this.reader = reader; + + this.eventBuilder = new EventBuilder(); + } + + /** + * Reads line by line from the asterisk server, sets the protocol identifier + * as soon as it is received and dispatches the received + * events and responses via the associated connection. + * + * @see DefaultManagerConnection#dispatchEvent(ManagerEvent) + * @see DefaultManagerConnection#dispatchResponse(ManagerResponse) + * @see DefaultManagerConnection#setProtocolIdentifier(String) + */ + public void run() + { + String line; + List commandResult = new ArrayList(); + boolean processingCommandResult = false; + Map buffer = new HashMap(); + + try + { + while ((line = reader.readLine()) != null && !die) + { + // dirty hack for handling the CommandAction. Needs fix when manager protocol is enhanced. + if (processingCommandResult) + { + if ("--END COMMAND--".equals(line)) + { + CommandResponse commandResponse = new CommandResponse(); + + if (!commandResult.isEmpty() + && ((String) commandResult.get(0)).startsWith("ActionID")) + { + String tmp = (String) commandResult.get(0); + int delimiterIndex = tmp.indexOf(":"); + if (delimiterIndex > 0 && tmp.length() > delimiterIndex + 2) + { + commandResult.remove(0); + commandResponse.setActionId(tmp.substring(delimiterIndex + 2)); + } + } + commandResponse.setResponse("Follows"); + commandResponse.setDateReceived(new Date()); + commandResponse.setResult(commandResult); + connection.dispatchResponse(commandResponse); + commandResult = new ArrayList(); + processingCommandResult = false; + } + else + { + commandResult.add(line); + } + continue; + } + if ("Response: Follows".equalsIgnoreCase(line)) + { + processingCommandResult = true; + continue; + } + + // maybe we will find a better way to identify the protocol identifier but for now + // this works quite well. + if (line.startsWith("Asterisk Call Manager/") + && connection.getProtocolIdentifier() == null) + { + connection.setProtocolIdentifier(line); + continue; + } + + // an empty line indicates a normal response's or event's end so we build + // the corresponding value object and dispatch it through the ManagerConnection. + if (line.length() == 0) + { + if (buffer.containsKey("response")) + { + ManagerResponse response = buildResponse(buffer); + if (response != null) + { + connection.dispatchResponse(response); + } + } + else if (buffer.containsKey("event")) + { + ManagerEvent event = buildEvent(connection.getAsteriskServer(), buffer); + if (event != null) + { + connection.dispatchEvent(event); + } + } + + buffer.clear(); + } + else + { + int delimiterIndex; + + delimiterIndex = line.indexOf(":"); + if (delimiterIndex > 0 && line.length() > delimiterIndex + 2) + { + String name; + String value; + + name = line.substring(0, delimiterIndex).toLowerCase(); + value = line.substring(delimiterIndex + 2); + + buffer.put(name, value); + } + } + } + connection.handleDisconnection(); + } + catch (IOException e) + { + log.warn("IOException while reading from asterisk server, terminating thread.", e); + } + finally + { + log.info("Disconnected, closing reader"); + try + { + reader.close(); + } + catch (IOException ex) + { + log.warn("Unable to close reader", ex); + } + } + } + + public void die() + { + this.die = true; + } + + private ManagerResponse buildResponse(Map buffer) + { + ManagerResponse response; + String responseType = (String) buffer.get("response"); + + // determine type + if ("error".equals(responseType)) + { + response = new ManagerError(); + } + else if (buffer.containsKey("challenge")) + { + ChallengeResponse challengeResponse = new ChallengeResponse(); + challengeResponse.setChallenge((String) buffer.get("challenge")); + response = challengeResponse; + } + else if (buffer.containsKey("mailbox") && buffer.containsKey("waiting")) + { + MailboxStatusResponse mailboxStatusResponse = new MailboxStatusResponse(); + mailboxStatusResponse.setMailbox((String) buffer.get("mailbox")); + mailboxStatusResponse.setWaiting(new Integer((String) buffer.get("mailbox"))); + response = mailboxStatusResponse; + } + else if (buffer.containsKey("mailbox") && buffer.containsKey("newmessages") + && buffer.containsKey("oldmessages")) + { + MailboxCountResponse mailboxCountResponse = new MailboxCountResponse(); + mailboxCountResponse.setMailbox((String) buffer.get("mailbox")); + mailboxCountResponse.setNewMessages(new Integer((String) buffer.get("newmessages"))); + mailboxCountResponse.setOldMessages(new Integer((String) buffer.get("oldmessages"))); + response = mailboxCountResponse; + } + else if (buffer.containsKey("exten") && buffer.containsKey("context") + && buffer.containsKey("hint") && buffer.containsKey("status")) + { + ExtensionStateResponse extensionStateResponse = new ExtensionStateResponse(); + extensionStateResponse.setExten((String) buffer.get("exten")); + extensionStateResponse.setContext((String) buffer.get("context")); + extensionStateResponse.setHint((String) buffer.get("hint")); + extensionStateResponse.setStatus(new Integer((String) buffer.get("status"))); + response = extensionStateResponse; + } + else + { + response = new ManagerResponse(); + } + + // fill known attributes + response.setResponse(responseType); + + if (buffer.containsKey("actionid")) + { + response.setActionId((String) buffer.get("actionid")); + } + if (buffer.containsKey("message")) + { + response.setMessage((String) buffer.get("message")); + } + if (buffer.containsKey("uniqueid")) + { + response.setUniqueId((String) buffer.get("uniqueid")); + } + + response.setDateReceived(new Date()); + + return response; + } + + private ManagerEvent buildEvent(Object source, Map buffer) + { + ManagerEvent event; + + event = this.eventBuilder.buildEvent(source, buffer); + + if (event != null) + { + event.setDateReceived(new Date()); + } + + return event; + } } \ No newline at end of file Index: DefaultManagerConnection.java =================================================================== RCS file: /cvsroot/asterisk-java/asterisk-java/src/net/sf/asterisk/manager/DefaultManagerConnection.java,v retrieving revision 1.11 retrieving revision 1.12 diff -u -d -p -r1.11 -r1.12 --- DefaultManagerConnection.java 1 Feb 2005 17:20:34 -0000 1.11 +++ DefaultManagerConnection.java 4 Feb 2005 18:54:03 -0000 1.12 @@ -47,8 +47,7 @@ public class DefaultManagerConnection im private long actionIdCount = 0; /* Config attributes */ - private String hostname = "localhost"; - private int port = 5038; + private AsteriskServer asteriskServer ; private String username; private String password; private long defaultTimeout = 2000; @@ -67,12 +66,12 @@ public class DefaultManagerConnection im public DefaultManagerConnection() { + this.asteriskServer = new AsteriskServer() ; } public DefaultManagerConnection(String hostname, int port, String username, String password) { - setHostname(hostname); - setPort(port); + this.asteriskServer = new AsteriskServer(hostname,port) ; setUsername(username); setPassword(password); } @@ -85,7 +84,7 @@ public class DefaultManagerConnection im */ public void setHostname(String hostname) { - this.hostname = hostname; + this.asteriskServer.setHostname(hostname) ; } /** @@ -97,7 +96,7 @@ public class DefaultManagerConnection im */ public void setPort(int port) { - this.port = port; + this.asteriskServer.setPort(port); } /** @@ -247,16 +246,16 @@ public class DefaultManagerConnection im logger.info("Successfully logged in"); // notify event listeners - dispatchEvent(new ConnectEvent(this)); + dispatchEvent(new ConnectEvent(this.asteriskServer)); } private void connect() throws IOException { BufferedReader bufferedReader; - logger.info("Connecting to " + hostname + " port " + port); + logger.info("Connecting to " + asteriskServer.getHostname()+ " port " + asteriskServer.getPort()); - this.socket = new Socket(hostname, port); + this.socket = new Socket(asteriskServer.getHostname(),asteriskServer.getPort()); bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream())); @@ -565,7 +564,7 @@ public class DefaultManagerConnection im disconnect(); // notify event listeners - dispatchEvent(new DisconnectEvent(this)); + dispatchEvent(new DisconnectEvent(this.asteriskServer)); // try to reconnect numTries = 0; @@ -675,10 +674,10 @@ public class DefaultManagerConnection im } } - /* (non-Javadoc) - * @see net.sf.asterisk.manager.ManagerConnection#getHostname() + /** + * @return Returns the asteriskServer. */ - public String getHostname() { - return hostname; + public AsteriskServer getAsteriskServer() { + return asteriskServer; } } \ No newline at end of file Index: ManagerConnection.java =================================================================== RCS file: /cvsroot/asterisk-java/asterisk-java/src/net/sf/asterisk/manager/ManagerConnection.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -p -r1.6 -r1.7 --- ManagerConnection.java 1 Feb 2005 17:20:34 -0000 1.6 +++ ManagerConnection.java 4 Feb 2005 18:54:03 -0000 1.7 @@ -121,9 +121,9 @@ public interface ManagerConnection void removeEventHandler(ManagerEventHandler eventHandler); /** - * Return hostname of connection + * Return Asterisk server of connection * */ - String getHostname() ; + AsteriskServer getAsteriskServer() ; } \ No newline at end of file Index: Channel.java =================================================================== RCS file: /cvsroot/asterisk-java/asterisk-java/src/net/sf/asterisk/manager/Channel.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -p -r1.2 -r1.3 --- Channel.java 4 Jan 2005 21:59:55 -0000 1.2 +++ Channel.java 4 Feb 2005 18:54:04 -0000 1.3 @@ -19,6 +19,7 @@ public class Channel implements Serializ { private static final long serialVersionUID = -6919877370396385380L; + private AsteriskServer asteriskServer ; private String id; private String name; private String callerId; @@ -32,6 +33,7 @@ public class Channel implements Serializ private Date dateOfCreation; private Channel linkedChannel; + /** * Creates a new channel. * @param name name of this channel, for example "SIP/1310-20da" @@ -43,6 +45,25 @@ public class Channel implements Serializ this.id = id; } + public Channel(String name, String id, AsteriskServer server) + { + this.name = name; + this.id = id; + this.asteriskServer = server ; + } + + /** + * @return Returns the asteriskServer. + */ + public AsteriskServer getAsteriskServer() { + return asteriskServer; + } + /** + * @param asteriskServer The asteriskServer to set. + */ + public void setAsteriskServer(AsteriskServer asteriskServer) { + this.asteriskServer = asteriskServer; + } /** * Returns the unique id of this channel, for example "1099015093.165". */ @@ -198,4 +219,5 @@ public class Channel implements Serializ { return ToStringBuilder.reflectionToString(this, ToStringStyle.MULTI_LINE_STYLE); } + } \ No newline at end of file Index: MultiAsterisksManager.java =================================================================== RCS file: /cvsroot/asterisk-java/asterisk-java/src/net/sf/asterisk/manager/MultiAsterisksManager.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -p -r1.1 -r1.2 --- MultiAsterisksManager.java 1 Feb 2005 17:20:34 -0000 1.1 +++ MultiAsterisksManager.java 4 Feb 2005 18:54:04 -0000 1.2 @@ -48,7 +48,7 @@ public class MultiAsterisksManager imple public void addManagerConnection(ManagerConnection connection) { - managerConnections.put(connection.getHostname(),connection) ; + managerConnections.put(connection.getAsteriskServer(),connection) ; Hashtable initializedBoolean = new Hashtable(3,1) ; initializedBoolean.put("channelsInitialized", new Boolean(false)); @@ -56,7 +56,7 @@ public class MultiAsterisksManager imple initializedBoolean.put("queuesInitialized", new Boolean(true)); initializedBoolean.put("initialized", new Boolean(false)); - initialized.put(connection.getHostname(),initializedBoolean) ; + initialized.put(connection.getAsteriskServer(),initializedBoolean) ; } @@ -72,12 +72,6 @@ public class MultiAsterisksManager imple } } - public String originateCall(OriginateAction originateAction) throws TimeoutException, IOException - { -// TODO originateCall with multi servers - return null; - } - /** * Returns a map of all active channel by their unique id: "hostname:ChannelId". */ @@ -101,10 +95,10 @@ public class MultiAsterisksManager imple { System.out.println("received: " + event); - Hashtable initializedBoolean = (Hashtable) initialized.get(getConnectionSource(event).getHostname()) ; + Hashtable initializedBoolean = (Hashtable) initialized.get((AsteriskServer) event.getSource()) ; - if (! ((Boolean)initializedBoolean.get("initialized")).booleanValue()) + if (!((Boolean)initializedBoolean.get("initialized")).booleanValue()) { if (event instanceof StatusEvent) { @@ -183,14 +177,14 @@ public class MultiAsterisksManager imple } } - protected void addChannel(Channel channel, ManagerConnection connection) + protected void addChannel(Channel channel) { - channels.put(connection.getHostname()+":"+channel.getId(), channel); + channels.put(channel.getAsteriskServer().getHostname()+"/"+channel.getId(), channel); } - protected void removeChannel(Channel channel, ManagerConnection connection) + protected void removeChannel(Channel channel) { - channels.remove(connection.getHostname()+":"+channel.getId()); + channels.remove(channel.getAsteriskServer().getHostname()+"/"+channel.getId()); } protected void addQueue(Queue queue) @@ -208,10 +202,10 @@ public class MultiAsterisksManager imple Channel channel; boolean isNew = false; - channel = (Channel) channels.get(getConnectionSource(event).getHostname()+":"+event.getUniqueId()); + channel = (Channel) channels.get(((AsteriskServer) event.getSource()).getHostname()+"/"+event.getUniqueId()); if (channel == null) { - channel = new Channel(event.getChannel(), event.getUniqueId()); + channel = new Channel(event.getChannel(), event.getUniqueId(), (AsteriskServer) event.getSource()); if (event.getSeconds() != null) { channel.setDateOfCreation(new Date(System.currentTimeMillis() @@ -244,15 +238,15 @@ public class MultiAsterisksManager imple if (isNew) { - log.info("Adding new channel " + channel.getName()); - addChannel(channel, getConnectionSource(event)); + log.info("Adding new channel " + channel.getName() + ", from server " + channel.getAsteriskServer().getHostname() ); + addChannel(channel); } } protected void handleStatusCompleteEvent(StatusCompleteEvent event) { log.info("Channels are now initialized"); - Hashtable initializedBoolean = (Hashtable) initialized.get(getConnectionSource(event).getHostname()) ; + Hashtable initializedBoolean = (Hashtable) initialized.get((AsteriskServer) event.getSource()) ; initializedBoolean.put("channelsInitialized", new Boolean(true)) ; } @@ -332,18 +326,18 @@ public class MultiAsterisksManager imple protected void handleNewChannelEvent(NewChannelEvent event) { - Channel channel = new Channel(event.getChannel(), event.getUniqueId()); + Channel channel = new Channel(event.getChannel(), event.getUniqueId(), (AsteriskServer) event.getSource()); channel.setCallerId(event.getCallerId()); channel.setState(ChannelStateEnum.getEnum(event.getState())); - log.info("Adding channel " + channel.getName()); - addChannel(channel, getConnectionSource(event)); + log.info("Adding channel " + channel.getName() + ", on server " + channel.getAsteriskServer().getHostname()); + addChannel(channel); } protected void handleNewExtenEvent(NewExtenEvent event) { - Channel channel = (Channel) channels.get(getConnectionSource(event).getHostname()+":"+event.getUniqueId()); + Channel channel = (Channel) channels.get(((AsteriskServer) event.getSource()).getHostname()+"/"+event.getUniqueId()); if (channel == null) { log.error("Ignored NewExtenEvent for unknown channel " + event.getChannel()); @@ -362,7 +356,7 @@ public class MultiAsterisksManager imple protected void handleNewStateEvent(NewStateEvent event) { - Channel channel = (Channel) channels.get(getConnectionSource(event).getHostname()+":"+event.getUniqueId()); + Channel channel = (Channel) channels.get(((AsteriskServer) event.getSource()).getHostname()+"/"+event.getUniqueId()); if (channel == null) { log.error("Ignored NewStateEvent for unknown channel " + event.getChannel()); @@ -374,7 +368,7 @@ public class MultiAsterisksManager imple protected void handleHangupEvent(HangupEvent event) { - Channel channel = (Channel) channels.get(getConnectionSource(event).getHostname()+":"+event.getUniqueId()); + Channel channel = (Channel) channels.get(((AsteriskServer) event.getSource()).getHostname()+"/"+event.getUniqueId()); if (channel == null) { log.error("Ignored HangupEvent for unknown channel " + event.getChannel()); @@ -387,13 +381,13 @@ public class MultiAsterisksManager imple } log.info("Removing channel " + channel.getName() + " due to hangup"); - removeChannel(channel, getConnectionSource(event)); + removeChannel(channel); } protected void handleLinkEvent(LinkEvent event) { - Channel channel1 = (Channel) channels.get(getConnectionSource(event).getHostname()+":"+event.getUniqueId1()); - Channel channel2 = (Channel) channels.get(getConnectionSource(event).getHostname()+":"+event.getUniqueId2()); + Channel channel1 = (Channel) channels.get(((AsteriskServer) event.getSource()).getHostname()+"/"+event.getUniqueId1()); + Channel channel2 = (Channel) channels.get(((AsteriskServer) event.getSource()).getHostname()+"/"+event.getUniqueId2()); if (channel1 == null) { @@ -444,14 +438,17 @@ public class MultiAsterisksManager imple protected void handleRenameEvent(RenameEvent event) { - Channel channel = (Channel) channels.get(getConnectionSource(event).getHostname()+":"+event.getUniqueId()); + Channel channel = (Channel) channels.get(((AsteriskServer) event.getSource()).getHostname()+"/"+event.getUniqueId()); log.info("Renaming channel '" + channel.getName() + "' to '" + event.getNewname() + "'"); channel.setName(event.getNewname()); } - protected ManagerConnection getConnectionSource(ManagerEvent event) { - - return (ManagerConnection) event.getSource() ; + /* (non-Javadoc) + * @see net.sf.asterisk.manager.AsteriskManager#originateCall(net.sf.asterisk.manager.action.OriginateAction) + */ + public String originateCall(OriginateAction originateAction) throws TimeoutException, IOException { + // TODO Auto-generated method stub + return null; } } \ No newline at end of file Index: DefaultAsteriskManager.java =================================================================== RCS file: /cvsroot/asterisk-java/asterisk-java/src/net/sf/asterisk/manager/DefaultAsteriskManager.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -p -r1.8 -r1.9 --- DefaultAsteriskManager.java 31 Jan 2005 01:18:04 -0000 1.8 +++ DefaultAsteriskManager.java 4 Feb 2005 18:54:04 -0000 1.9 @@ -75,7 +75,7 @@ public class DefaultAsteriskManager impl public void initialize() throws TimeoutException, IOException, AuthenticationFailedException { connection.addEventHandler(this); - //connection.login(); + connection.login(); connection.sendAction(new StatusAction()); connection.sendAction(new QueueStatusAction()); } |
From: PY R. <par...@us...> - 2005-02-04 18:54:14
|
Update of /cvsroot/asterisk-java/asterisk-java/test/net/sf/asterisk/manager In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25685/test/net/sf/asterisk/manager Modified Files: TestMultiAsteriskManager.java Log Message: Add new class : AsteriskServer to manage multiServers. Index: TestMultiAsteriskManager.java =================================================================== RCS file: /cvsroot/asterisk-java/asterisk-java/test/net/sf/asterisk/manager/TestMultiAsteriskManager.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -p -r1.1 -r1.2 --- TestMultiAsteriskManager.java 1 Feb 2005 17:20:34 -0000 1.1 +++ TestMultiAsteriskManager.java 4 Feb 2005 18:54:04 -0000 1.2 @@ -5,6 +5,11 @@ */ package net.sf.asterisk.manager; +import java.io.IOException; +import java.util.Map; + +import net.sf.asterisk.manager.action.OriginateAction; +import net.sf.asterisk.manager.action.RedirectAction; import junit.framework.TestCase; /** @@ -40,7 +45,7 @@ public class TestMultiAsteriskManager ex try { - Thread.sleep(15000); + Thread.sleep(5000); } catch (InterruptedException e) { @@ -48,4 +53,7 @@ public class TestMultiAsteriskManager ex System.out.println(mam.getChannels()); } + + + } \ No newline at end of file |
From: Stefan R. <sr...@us...> - 2005-02-02 11:20:27
|
Update of /cvsroot/asterisk-java/asterisk-java/src/net/sf/asterisk/manager In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2100/src/net/sf/asterisk/manager Modified Files: EventBuilder.java Log Message: removed dependency on String.contains(String) which is JDK 1.5 only Index: EventBuilder.java =================================================================== RCS file: /cvsroot/asterisk-java/asterisk-java/src/net/sf/asterisk/manager/EventBuilder.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -p -r1.9 -r1.10 --- EventBuilder.java 2 Feb 2005 07:46:21 -0000 1.9 +++ EventBuilder.java 2 Feb 2005 11:20:06 -0000 1.10 @@ -128,14 +128,7 @@ public class EventBuilder String eventType; className = clazz.getName(); - if (className.contains(".")) - { - eventType = className.substring(className.lastIndexOf('.') + 1).toLowerCase(); - } - else - { - eventType = className.toLowerCase(); - } + eventType = className.substring(className.lastIndexOf('.') + 1).toLowerCase(); if (eventType.endsWith("event")) { |
From: Stefan R. <sr...@us...> - 2005-02-02 07:46:40
|
Update of /cvsroot/asterisk-java/asterisk-java/src/net/sf/asterisk/manager In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21472/src/net/sf/asterisk/manager Modified Files: EventBuilder.java Log Message: added javadoc for registerEventClass methods Index: EventBuilder.java =================================================================== RCS file: /cvsroot/asterisk-java/asterisk-java/src/net/sf/asterisk/manager/EventBuilder.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -p -r1.8 -r1.9 --- EventBuilder.java 30 Sep 2004 09:51:02 -0000 1.8 +++ EventBuilder.java 2 Feb 2005 07:46:21 -0000 1.9 @@ -114,6 +114,14 @@ public class EventBuilder registerEventClass(ZapShowChannelsCompleteEvent.class); } + /** + * Registers a new event class. The event this class is registered for is simply derived + * from the name of the class by stripping any package name (if present) and stripping + * the sufffix "Event". + * For example <code>net.sf.asterisk.manager.event.JoinEvent</code> is registered for the + * event "Join". + * @param clazz the event class to register, must extend net.sf.asterisk.manager.event.Event. + */ public void registerEventClass(Class clazz) { String className; @@ -137,6 +145,11 @@ public class EventBuilder registerEventClass(eventType, clazz); } + /** + * Registers a new event class for the event given by eventType. + * @param eventType the name of the event to register the class for. For example "Join". + * @param clazz the event class to register, must extend net.sf.asterisk.manager.event.Event. + */ public void registerEventClass(String eventType, Class clazz) { Constructor defaultConstructor; |
From: Stefan R. <sr...@us...> - 2005-01-31 01:23:06
|
Update of /cvsroot/asterisk-java/CVSROOT In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18089 Modified Files: loginfo Log Message: - added sr...@re... Index: loginfo =================================================================== RCS file: /cvsroot/asterisk-java/CVSROOT/loginfo,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -p -r1.6 -r1.7 --- loginfo 29 Jan 2005 12:02:14 -0000 1.6 +++ loginfo 31 Jan 2005 01:22:40 -0000 1.7 @@ -26,3 +26,4 @@ # or #DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog DEFAULT $CVSROOT/CVSROOT/syncmail %{sVv} ast...@li... +DEFAULT $CVSROOT/CVSROOT/syncmail %{sVv} sr...@re... |
From: Stefan R. <sr...@us...> - 2005-01-31 01:18:22
|
Update of /cvsroot/asterisk-java/asterisk-java/src/net/sf/asterisk/manager/event In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17184/src/net/sf/asterisk/manager/event Modified Files: ManagerEvent.java Added Files: DisconnectEvent.java ConnectEvent.java Log Message: - added ConnectEvent and DisconnectEvent - DefaultAsteriskManager now refreshes its state after restarting asterisk --- NEW FILE: DisconnectEvent.java --- /* * (c) 2004 Stefan Reuter * * Created on Sep 24, 2004 */ package net.sf.asterisk.manager.event; /** * A DisconnectEvent is triggered when the connection to the asterisk server is lost.<br> * It is a pseudo event not directly related to an asterisk generated event. * * @author srt * @version $Id: DisconnectEvent.java,v 1.1 2005/01/31 01:18:04 srt Exp $ */ public class DisconnectEvent extends ManagerEvent { private static final long serialVersionUID = 3689355411862206518L; /** * @param source */ public DisconnectEvent(Object source) { super(source); } } --- NEW FILE: ConnectEvent.java --- /* * (c) 2004 Stefan Reuter * * Created on Sep 24, 2004 */ package net.sf.asterisk.manager.event; /** * A ConnectEvent is triggered after successful login to the asterisk server.<br> * It is a pseudo event not directly related to an asterisk generated event. * * @author srt * @version $Id: ConnectEvent.java,v 1.1 2005/01/31 01:18:04 srt Exp $ */ public class ConnectEvent extends ManagerEvent { private static final long serialVersionUID = 3257845467831284784L; /** * @param source */ public ConnectEvent(Object source) { super(source); } } Index: ManagerEvent.java =================================================================== RCS file: /cvsroot/asterisk-java/asterisk-java/src/net/sf/asterisk/manager/event/ManagerEvent.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -p -r1.9 -r1.10 --- ManagerEvent.java 29 Sep 2004 15:18:19 -0000 1.9 +++ ManagerEvent.java 31 Jan 2005 01:18:04 -0000 1.10 @@ -40,7 +40,9 @@ public abstract class ManagerEvent exten } /** - * Returns the point in time this event was received from the asterisk server. + * Returns the point in time this event was received from the asterisk server.<br> + * Pseudo events that are not directly received from the asterisk server + * (for example ConnectEvent and DisconnectEvent) may return <code>null</code>. */ public Date getDateReceived() { |
From: Stefan R. <sr...@us...> - 2005-01-31 01:18:22
|
Update of /cvsroot/asterisk-java/asterisk-java/src/net/sf/asterisk/manager In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17184/src/net/sf/asterisk/manager Modified Files: DefaultManagerConnection.java ManagerConnection.java DefaultAsteriskManager.java Log Message: - added ConnectEvent and DisconnectEvent - DefaultAsteriskManager now refreshes its state after restarting asterisk Index: DefaultManagerConnection.java =================================================================== RCS file: /cvsroot/asterisk-java/asterisk-java/src/net/sf/asterisk/manager/DefaultManagerConnection.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -p -r1.9 -r1.10 --- DefaultManagerConnection.java 23 Oct 2004 07:19:45 -0000 1.9 +++ DefaultManagerConnection.java 31 Jan 2005 01:18:03 -0000 1.10 @@ -24,6 +24,8 @@ import net.sf.asterisk.manager.action.Ch import net.sf.asterisk.manager.action.LoginAction; import net.sf.asterisk.manager.action.LogoffAction; import net.sf.asterisk.manager.action.ManagerAction; +import net.sf.asterisk.manager.event.ConnectEvent; +import net.sf.asterisk.manager.event.DisconnectEvent; import net.sf.asterisk.manager.event.ManagerEvent; import net.sf.asterisk.manager.response.ChallengeResponse; import net.sf.asterisk.manager.response.ManagerError; @@ -174,8 +176,7 @@ public class DefaultManagerConnection im login(defaultTimeout); } - private void login(long timeout) throws IOException, AuthenticationFailedException, - TimeoutException + private void login(long timeout) throws IOException, AuthenticationFailedException, TimeoutException { long timeSpent; ChallengeAction challengeAction; @@ -228,8 +229,7 @@ public class DefaultManagerConnection im { logger.error("Unable to create login key using MD5 Message Digest", ex); disconnect(); - throw new AuthenticationFailedException( - "Unable to create login key using MD5 Message Digest", ex); + throw new AuthenticationFailedException("Unable to create login key using MD5 Message Digest", ex); } loginResponse = sendAction(loginAction); @@ -245,6 +245,9 @@ public class DefaultManagerConnection im this.keepAlive = true; logger.info("Successfully logged in"); + + // notify event listeners + dispatchEvent(new ConnectEvent(this)); } private void connect() throws IOException @@ -271,10 +274,10 @@ public class DefaultManagerConnection im logoffAction = new LogoffAction(); sendAction(logoffAction); - + disconnect(); } - + private void disconnect() { if (this.writer != null) @@ -304,8 +307,7 @@ public class DefaultManagerConnection im return sendAction(action, defaultTimeout); } - public ManagerResponse sendAction(ManagerAction action, long timeout) throws IOException, - TimeoutException + public ManagerResponse sendAction(ManagerAction action, long timeout) throws IOException, TimeoutException { long timeSpent; ResponseHandlerResult result; @@ -326,8 +328,7 @@ public class DefaultManagerConnection im if (timeSpent > timeout) { - throw new TimeoutException("Timeout waiting for response to " - + action.getAction()); + throw new TimeoutException("Timeout waiting for response to " + action.getAction()); } } catch (InterruptedException ex) @@ -338,8 +339,7 @@ public class DefaultManagerConnection im return result.getResponse(); } - public void sendAction(ManagerAction action, ManagerResponseHandler callbackHandler) - throws IOException + public void sendAction(ManagerAction action, ManagerResponseHandler callbackHandler) throws IOException { String internalActionId; @@ -376,10 +376,10 @@ public class DefaultManagerConnection im this.writer.print(actionString); this.writer.flush(); - logger.debug("Sent action with internalActionId '" + internalActionId + "':\n"+ actionString); + logger.debug("Sent action with internalActionId '" + internalActionId + "':\n" + actionString); } } - + /** * Creates a new unique internal action id based on the hash code of this * connection and a sequence. @@ -452,15 +452,13 @@ public class DefaultManagerConnection im response.setActionId(Util.stripInternalActionId(actionId)); } - logger.debug("Dispatching response with internalActionId '" + internalActionId + "':\n" - + response); + logger.debug("Dispatching response with internalActionId '" + internalActionId + "':\n" + response); if (internalActionId != null) { synchronized (this.responseHandlers) { - responseHandler = (ManagerResponseHandler) this.responseHandlers - .get(internalActionId); + responseHandler = (ManagerResponseHandler) this.responseHandlers.get(internalActionId); if (responseHandler != null) { this.responseHandlers.remove(internalActionId); @@ -469,7 +467,8 @@ public class DefaultManagerConnection im } else { - logger.error("Unable to retrieve internalActionId from response: asterisk sent actionId '" + actionId + "':\n" + response); + logger.error("Unable to retrieve internalActionId from response: asterisk sent actionId '" + actionId + + "':\n" + response); } if (responseHandler != null) @@ -565,6 +564,10 @@ public class DefaultManagerConnection im // clean up at first disconnect(); + // notify event listeners + dispatchEvent(new DisconnectEvent(this)); + + // try to reconnect numTries = 0; while (this.keepAlive) { Index: ManagerConnection.java =================================================================== RCS file: /cvsroot/asterisk-java/asterisk-java/src/net/sf/asterisk/manager/ManagerConnection.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -p -r1.4 -r1.5 --- ManagerConnection.java 29 Sep 2004 15:18:21 -0000 1.4 +++ ManagerConnection.java 31 Jan 2005 01:18:04 -0000 1.5 @@ -48,7 +48,7 @@ public interface ManagerConnection * @see net.sf.asterisk.manager.action.LogoffAction */ void logoff() throws IOException, TimeoutException; - + /** * Returns the protocol identifier, i.e. a string like "Asterisk Call Manager/1.0". * @@ -99,7 +99,7 @@ public interface ManagerConnection * @throws IOException */ void sendAction(ManagerAction action, ManagerResponseHandler callbackHandler) throws IOException; - + /** * Registers an event handler to be called whenever an {@link net.sf.asterisk.manager.event.ManagerEvent} * is receiced from the asterisk server. @@ -109,7 +109,7 @@ public interface ManagerConnection * @see #removeEventHandler(ManagerEventHandler) */ void addEventHandler(ManagerEventHandler eventHandler); - + /** * Unregisters a previously registered event handler.<br> * Does nothing if the given event handler hasn't be been regiered before. Index: DefaultAsteriskManager.java =================================================================== RCS file: /cvsroot/asterisk-java/asterisk-java/src/net/sf/asterisk/manager/DefaultAsteriskManager.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -p -r1.7 -r1.8 --- DefaultAsteriskManager.java 29 Jan 2005 10:59:57 -0000 1.7 +++ DefaultAsteriskManager.java 31 Jan 2005 01:18:04 -0000 1.8 @@ -17,6 +17,8 @@ import java.util.Map; import net.sf.asterisk.manager.action.OriginateAction; import net.sf.asterisk.manager.action.QueueStatusAction; import net.sf.asterisk.manager.action.StatusAction; +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.LinkEvent; import net.sf.asterisk.manager.event.ManagerEvent; @@ -109,6 +111,16 @@ public class DefaultAsteriskManager impl { System.out.println("received: " + event); + if (event instanceof ConnectEvent) + { + handleConnectEvent((ConnectEvent) event); + } + else if (event instanceof DisconnectEvent) + { + handleDisconnectEvent((DisconnectEvent) event); + } + + // build initial state if not yet initialized, dispatch otherwise. if (!initialized) { if (event instanceof StatusEvent) @@ -219,8 +231,8 @@ public class DefaultAsteriskManager impl channel = new Channel(event.getChannel(), event.getUniqueId()); if (event.getSeconds() != null) { - channel.setDateOfCreation(new Date(System.currentTimeMillis() - - (event.getSeconds().intValue() * 1000))); + channel + .setDateOfCreation(new Date(System.currentTimeMillis() - (event.getSeconds().intValue() * 1000))); } isNew = true; } @@ -260,6 +272,45 @@ public class DefaultAsteriskManager impl this.channelsInitialized = true; } + /** + * Resets the internal state when the connection to the asterisk server is lost. + */ + protected void handleDisconnectEvent(DisconnectEvent disconnectEvent) + { + this.channels.clear(); + this.queues.clear(); + this.queuedEvents.clear(); + this.channelsInitialized = false; + //TODO fix detection of queuesInitialized + this.queuesInitialized = true; + this.initialized = false; + } + + /** + * Requests the current state from the asterisk server after the connection to the asterisk + * server is restored. + */ + protected void handleConnectEvent(ConnectEvent connectEvent) + { + try + { + connection.sendAction(new StatusAction()); + } + catch (Exception e) + { + log.error("Unable to request channel status from asterisk server after reconnect.", e); + } + + try + { + connection.sendAction(new QueueStatusAction()); + } + catch (Exception e) + { + log.error("Unable to request queue status from asterisk server after reconnect.", e); + } + } + protected void handleQueueParamsEvent(QueueParamsEvent event) { Queue queue; |
From: Stefan R. <sr...@us...> - 2005-01-29 11:40:06
|
test |