|
Asterisk-Java | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.asteriskjava.manager.DefaultManagerConnection
public class DefaultManagerConnection
Default implemention of the
ManagerConnection interface.
Generelly avoid direct use of this class. Use a
ManagerConnectionFactory to obtain a
ManagerConnection instead.
When using a dependency injection framework like the Spring Framework direct
usage for wiring up beans that require a
ManagerConnection property is fine though.
Note that the DefaultManagerConnection will create one new Thread for reading
data from Asterisk once it is
ManagerConnectionState.CONNECTING.
ManagerConnectionFactory| Constructor Summary | |
|---|---|
DefaultManagerConnection()
Creates a new instance. |
|
DefaultManagerConnection(java.lang.String hostname,
int port,
java.lang.String username,
java.lang.String password)
Creates a new instance with the given connection parameters. |
|
DefaultManagerConnection(java.lang.String hostname,
java.lang.String username,
java.lang.String password)
Creates a new instance with the given connection parameters using Asterisk's default port. |
|
| Method Summary | |
|---|---|
void |
addEventListener(ManagerEventListener listener)
Registers an event listener that is called whenever an ManagerEvent is receiced from the
Asterisk server. |
java.lang.String |
getHostname()
Returns the hostname of the connected Asterisk server. |
java.net.InetAddress |
getLocalAddress()
Returns the local address of the underlying socket connection. |
int |
getLocalPort()
Returns the local port of the underlying socket connection. |
java.lang.String |
getPassword()
Returns the password to use to connect to the Asterisk server. |
int |
getPort()
Returns the Manager API port of the connected Asterisk server. |
java.lang.String |
getProtocolIdentifier()
Returns the protocol identifier, that is a string like "Asterisk Call Manager/1.0". |
java.net.InetAddress |
getRemoteAddress()
Returns the remote address of the underlying socket connection. |
int |
getRemotePort()
Returns the remote port of the underlying socket connection. |
ManagerConnectionState |
getState()
Returns the lifecycle status of this connection. |
java.lang.String |
getUsername()
Returns the username to use to connect to the Asterisk server. |
AsteriskVersion |
getVersion()
Returns the version of Asterisk running in the server. |
boolean |
isSsl()
Returns whether to use SSL. |
void |
login()
Logs in to the Asterisk server with the username and password specified when this connection was created. |
void |
login(java.lang.String events)
Logs in to the Asterisk server with the username and password specified when this connection was created and a given event mask. |
void |
logoff()
Sends a LogoffAction to the Asterisk server and disconnects. |
void |
registerUserEventClass(java.lang.Class<? extends ManagerEvent> userEventClass)
Registers a new user event type. |
void |
removeEventListener(ManagerEventListener listener)
Unregisters a previously registered event listener. |
ManagerResponse |
sendAction(ManagerAction action)
Sends a ManagerAction to the Asterisk server and waits for the corresponding ManagerResponse. |
ManagerResponse |
sendAction(ManagerAction action,
long timeout)
Sends a ManagerAction to the Asterisk server and waits for the corresponding ManagerResponse. |
void |
sendAction(ManagerAction action,
SendActionCallback callbackHandler)
Sends a ManagerAction to the Asterisk server and registers a callback handler to be called when the corresponding ManagerResponse is
received. |
ResponseEvents |
sendEventGeneratingAction(EventGeneratingAction action)
Sends an EventGeneratingAction to the Asterisk server and waits
for the corresponding ManagerResponse and the
ResponseEvents |
ResponseEvents |
sendEventGeneratingAction(EventGeneratingAction action,
long timeout)
Sends an EventGeneratingAction to the Asterisk server and waits
for the corresponding ManagerResponse and the
ResponseEvents |
void |
setDefaultEventTimeout(long defaultEventTimeout)
Sets the time in milliseconds the synchronous method sendEventGeneratingAction(EventGeneratingAction) will wait for a
response and the last response event before throwing a TimeoutException. |
void |
setDefaultResponseTimeout(long defaultResponseTimeout)
Sets the time in milliseconds the synchronous method sendAction(ManagerAction) will wait for a response before
throwing a TimeoutException. |
void |
setDefaultTimeout(long defaultTimeout)
Deprecated. use setDefaultResponseTimeout(long) instead |
void |
setHostname(java.lang.String hostname)
Sets the hostname of the Asterisk server to connect to. |
void |
setKeepAliveAfterAuthenticationFailure(boolean keepAliveAfterAuthenticationFailure)
Set to true to try reconnecting to ther asterisk serve
even if the reconnection attempt threw an AuthenticationFailedException. |
void |
setPassword(java.lang.String password)
Sets the password to use to connect to the Asterisk server. |
void |
setPort(int port)
Sets the port to use to connect to the Asterisk server. |
void |
setSleepTime(long sleepTime)
Deprecated. no longer needed as we now use an interrupt based response checking approach. |
void |
setSocketReadTimeout(int socketReadTimeout)
Connection is dropped (and restarted) if it stales on read longer than the timeout. |
void |
setSocketTimeout(int socketTimeout)
The timeout to use when connecting the the Asterisk server. |
void |
setSsl(boolean ssl)
Sets whether to use SSL. |
void |
setUsername(java.lang.String username)
Sets the username to use to connect to the Asterisk server. |
java.lang.String |
toString()
|
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Constructor Detail |
|---|
public DefaultManagerConnection()
public DefaultManagerConnection(java.lang.String hostname,
java.lang.String username,
java.lang.String password)
hostname - the hostname of the Asterisk server to connect to.username - the username to use for loginpassword - the password to use for login
public DefaultManagerConnection(java.lang.String hostname,
int port,
java.lang.String username,
java.lang.String password)
hostname - the hostname of the Asterisk server to connect to.port - the port where Asterisk listens for incoming Manager API
connections, usually 5038.username - the username to use for loginpassword - the password to use for login| Method Detail |
|---|
public void setHostname(java.lang.String hostname)
Default is localhost.
hostname - the hostname to connect topublic void setPort(int port)
manager.conf file.
Default is 5038.
port - the port to connect topublic void setSsl(boolean ssl)
Default is false.
ssl - true to use SSL for the connection,
false for a plain text connection.public void setUsername(java.lang.String username)
manager.conf file.
username - the username to use for loginpublic void setPassword(java.lang.String password)
manager.conf file.
password - the password to use for loginpublic void setDefaultTimeout(long defaultTimeout)
setDefaultResponseTimeout(long) instead
sendAction(ManagerAction) will wait for a response before
throwing a TimeoutException.
Default is 2000.
defaultTimeout - default timeout in millisecondspublic void setDefaultResponseTimeout(long defaultResponseTimeout)
sendAction(ManagerAction) will wait for a response before
throwing a TimeoutException.
Default is 2000.
defaultResponseTimeout - default response timeout in millisecondspublic void setDefaultEventTimeout(long defaultEventTimeout)
sendEventGeneratingAction(EventGeneratingAction) will wait for a
response and the last response event before throwing a TimeoutException.
Default is 5000.
defaultEventTimeout - default event timeout in millisecondspublic void setSleepTime(long sleepTime)
It does nothing.
public void setKeepAliveAfterAuthenticationFailure(boolean keepAliveAfterAuthenticationFailure)
true to try reconnecting to ther asterisk serve
even if the reconnection attempt threw an AuthenticationFailedException.
Default is true.
public java.lang.String getHostname()
ManagerConnection
getHostname in interface ManagerConnectionpublic int getPort()
ManagerConnection
getPort in interface ManagerConnectionpublic java.lang.String getUsername()
ManagerConnectionmanager.conf file.
getUsername in interface ManagerConnectionpublic java.lang.String getPassword()
ManagerConnectionmanager.conf file.
getPassword in interface ManagerConnectionpublic AsteriskVersion getVersion()
ManagerConnection
getVersion in interface ManagerConnectionpublic boolean isSsl()
ManagerConnectionDefault is false.
isSsl in interface ManagerConnectiontrue if SSL is used for the connection,
false for a plain text connection.public java.net.InetAddress getLocalAddress()
ManagerConnection
getLocalAddress in interface ManagerConnectionpublic int getLocalPort()
ManagerConnection
getLocalPort in interface ManagerConnectionpublic java.net.InetAddress getRemoteAddress()
ManagerConnection
getRemoteAddress in interface ManagerConnectionpublic int getRemotePort()
ManagerConnection
getRemotePort in interface ManagerConnectionpublic void registerUserEventClass(java.lang.Class<? extends ManagerEvent> userEventClass)
ManagerConnectionAsterisk allows you to send custom events via the UserEvent application. If you choose to send such events you can extend the abstract class UserEvent provide a name for your new event and optionally add your own attributes. After registering a user event type Asterisk-Java will handle such events the same way it handles the internal events and inform your registered event handlers.
Note: If you write your own Asterisk applications that use Asterisk's
manager_event() function directly and don't use the
channel and uniqueid attributes provided by UserEvent you can also
register events that directly subclass ManagerEvent.
The event class must be a concrete class with a default constructor (one that takes no arguments).
registerUserEventClass in interface ManagerConnectionuserEventClass - the class representing the user event to register.UserEvent,
ManagerEventpublic void setSocketTimeout(int socketTimeout)
ManagerConnectionDefault is 0, that is using Java's built-in default.
setSocketTimeout in interface ManagerConnectionsocketTimeout - the timeout value to be used in milliseconds.Socket.connect(java.net.SocketAddress, int)public void setSocketReadTimeout(int socketReadTimeout)
ManagerConnection
If you set this property to a non zero value be sure to also use a
PingThread or somthing similar to make sure there is some network
traffic, otherwise you will encounter lots of unexpected reconnects. The
read timeout should be at least twice the interval set for the
PingThread.
Default is 0, that is no read timeout.
setSocketReadTimeout in interface ManagerConnectionsocketReadTimeout - the read timeout value to be used in
milliseconds.Socket.setSoTimeout(int)
public void login()
throws java.lang.IllegalStateException,
java.io.IOException,
AuthenticationFailedException,
TimeoutException
ManagerConnection
login in interface ManagerConnectionjava.lang.IllegalStateException - if connection is not in state INITIAL or
DISCONNECTED.
java.io.IOException - if the network connection is disrupted.
AuthenticationFailedException - if the username and/or password are
incorrect or the ChallengeResponse could not be built.
TimeoutException - if a timeout occurs while waiting for the
protocol identifier. The connection is closed in this case.LoginAction,
ChallengeAction
public void login(java.lang.String events)
throws java.lang.IllegalStateException,
java.io.IOException,
AuthenticationFailedException,
TimeoutException
ManagerConnection
login in interface ManagerConnectionevents - the event mask. Set to "on" if all events should be send,
"off" if not events should be sent or a combination of
"system", "call" and "log" (separated by ',') to specify what
kind of events should be sent.
java.lang.IllegalStateException - if connection is not in state INITIAL or
DISCONNECTED.
java.io.IOException - if the network connection is disrupted.
AuthenticationFailedException - if the username and/or password are
incorrect or the ChallengeResponse could not be built.
TimeoutException - if a timeout occurs while waiting for the
protocol identifier. The connection is closed in this case.LoginAction,
ChallengeAction
public void logoff()
throws java.lang.IllegalStateException
ManagerConnection
logoff in interface ManagerConnectionjava.lang.IllegalStateException - if not in state CONNECTED or RECONNECTING.LogoffAction
public ManagerResponse sendAction(ManagerAction action)
throws java.io.IOException,
TimeoutException,
java.lang.IllegalArgumentException,
java.lang.IllegalStateException
ManagerConnection
sendAction in interface ManagerConnectionaction - the action to send to the Asterisk server
java.io.IOException - if the network connection is disrupted.
TimeoutException - if no response is received within the default
timeout period.
java.lang.IllegalArgumentException - if the action is null.
java.lang.IllegalStateException - if you are not connected to an Asterisk
server.ManagerConnection.sendAction(ManagerAction, long),
ManagerConnection.sendAction(ManagerAction, SendActionCallback)
public ManagerResponse sendAction(ManagerAction action,
long timeout)
throws java.io.IOException,
TimeoutException,
java.lang.IllegalArgumentException,
java.lang.IllegalStateException
ManagerConnectionManagerResponse.
sendAction in interface ManagerConnectionaction - the action to send to the Asterisk servertimeout - milliseconds to wait for the response before throwing a
TimeoutException
java.io.IOException - if the network connection is disrupted.
TimeoutException - if no response is received within the given
timeout period.
java.lang.IllegalArgumentException - if the action is null.
java.lang.IllegalStateException - if you are not connected to an Asterisk
server.ManagerConnection.sendAction(ManagerAction, SendActionCallback)
public void sendAction(ManagerAction action,
SendActionCallback callbackHandler)
throws java.io.IOException,
java.lang.IllegalArgumentException,
java.lang.IllegalStateException
ManagerConnectionManagerResponse is
received. Be very careful that your callbackHandler terminates very
quickly and does not do any fancy processing because it is called from
the reader thread which is blocked for the time it takes to execute your
callbackHandler.
sendAction in interface ManagerConnectionaction - the action to send to the Asterisk servercallbackHandler - the callback handler to call when the response is
received or null if you are not interested in
the response
java.io.IOException - if the network connection is disrupted.
java.lang.IllegalArgumentException - if the action is null.
java.lang.IllegalStateException - if you are not connected to the Asterisk
server.
public ResponseEvents sendEventGeneratingAction(EventGeneratingAction action)
throws java.io.IOException,
EventTimeoutException,
java.lang.IllegalArgumentException,
java.lang.IllegalStateException
ManagerConnectionEventGeneratingAction to the Asterisk server and waits
for the corresponding ManagerResponse and the
ResponseEvents
EventGeneratingActions are ManagerActions that don't return
their response in the corresponding ManagerResponse but send a
series of events that contain the payload.
This method will block until the correpsonding action complete event has
been received. The action complete event is determined by
EventGeneratingAction.getActionCompleteEventClass().
Examples for EventGeneratingActions are
StatusAction,
QueueStatusAction or
AgentsAction.
sendEventGeneratingAction in interface ManagerConnectionaction - the action to send to the Asterisk server
java.io.IOException - if the network connection is disrupted.
EventTimeoutException - if no response or not all response events
are received within the given timeout period.
java.lang.IllegalArgumentException - if the action is null,
the actionCompleteEventClass property of the action is
null or if actionCompleteEventClass is not a
ResponseEvent.
java.lang.IllegalStateException - if you are not connected to an Asterisk
server.EventGeneratingAction,
ResponseEvent
public ResponseEvents sendEventGeneratingAction(EventGeneratingAction action,
long timeout)
throws java.io.IOException,
EventTimeoutException,
java.lang.IllegalArgumentException,
java.lang.IllegalStateException
ManagerConnectionEventGeneratingAction to the Asterisk server and waits
for the corresponding ManagerResponse and the
ResponseEvents
EventGeneratingActions are ManagerActions that don't return
their response in the corresponding ManagerResponse but send a
series of events that contain the payload.
This method will block until the correpsonding action complete event has
been received but no longer that timeout seconds. The action complete
event is determined by
EventGeneratingAction.getActionCompleteEventClass().
Examples for EventGeneratingActions are the
StatusAction, the
QueueStatusAction or the
AgentsAction.
sendEventGeneratingAction in interface ManagerConnectionaction - the action to send to the Asterisk servertimeout - milliseconds to wait for the response and the action
complete event before throwing a TimeoutException
java.io.IOException - if the network connection is disrupted.
EventTimeoutException - if no response or not all response events
are received within the given timeout period.
java.lang.IllegalArgumentException - if the action is null,
the actionCompleteEventClass property of the action is
null or if actionCompleteEventClass is not a
ResponseEvent.
java.lang.IllegalStateException - if you are not connected to an Asterisk
server.EventGeneratingAction,
ResponseEventpublic void addEventListener(ManagerEventListener listener)
ManagerConnectionManagerEvent is receiced from the
Asterisk server.
Event listeners are notified about new events in the same order as they were registered.
addEventListener in interface ManagerConnectionlistener - the listener to call whenever a manager event is
receivedManagerConnection.removeEventListener(ManagerEventListener)public void removeEventListener(ManagerEventListener listener)
ManagerConnectionDoes nothing if the given event listener hasn't be been regiered before.
removeEventListener in interface ManagerConnectionlistener - the listener to removeManagerConnection.addEventListener(ManagerEventListener)public java.lang.String getProtocolIdentifier()
ManagerConnection
getProtocolIdentifier in interface ManagerConnectionnull otherwisepublic ManagerConnectionState getState()
ManagerConnection
getState in interface ManagerConnectionpublic java.lang.String toString()
toString in class java.lang.Object
|
Asterisk-Java | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||