Package org.asteriskjava.manager

Source Code of org.asteriskjava.manager.DefaultManagerConnection

/*
*  Copyright 2004-2006 Stefan Reuter
*
*  Licensed under the Apache License, Version 2.0 (the "License");
*  you may not use this file except in compliance with the License.
*  You may obtain a copy of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
*  Unless required by applicable law or agreed to in writing, software
*  distributed under the License is distributed on an "AS IS" BASIS,
*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*  See the License for the specific language governing permissions and
*  limitations under the License.
*
*/
package org.asteriskjava.manager;

import java.io.IOException;
import java.net.InetAddress;

import org.asteriskjava.AsteriskVersion;
import org.asteriskjava.manager.action.EventGeneratingAction;
import org.asteriskjava.manager.action.ManagerAction;
import org.asteriskjava.manager.internal.ManagerConnectionImpl;
import org.asteriskjava.manager.response.ManagerResponse;
import org.asteriskjava.manager.event.ManagerEvent;

/**
* Default implemention of the
* {@link org.asteriskjava.manager.ManagerConnection} interface.
* <p>
* Generelly avoid direct use of this class. Use a
* {@link org.asteriskjava.manager.ManagerConnectionFactory} to obtain a
* {@link org.asteriskjava.manager.ManagerConnection} instead.
* <p>
* When using a dependency injection framework like the Spring Framework direct
* usage for wiring up beans that require a
* {@link org.asteriskjava.manager.ManagerConnection} property is fine though.
* <p>
* Note that the DefaultManagerConnection will create one new Thread for reading
* data from Asterisk once it is
* {@link org.asteriskjava.manager.ManagerConnectionState#CONNECTING}.
*
* @see org.asteriskjava.manager.ManagerConnectionFactory
* @author srt
* @version $Id$
*/
public class DefaultManagerConnection implements ManagerConnection
{
    private ManagerConnectionImpl impl;

    /**
     * Creates a new instance.
     */
    public DefaultManagerConnection()
    {
        this.impl = new ManagerConnectionImpl();
    }

    /**
     * Creates a new instance with the given connection parameters using
     * Asterisk's default port.
     *
     * @param hostname the hostname of the Asterisk server to connect to.
     * @param username the username to use for login
     * @param password the password to use for login
     */
    public DefaultManagerConnection(String hostname, String username, String password)
    {
        this();
        impl.setHostname(hostname);
        impl.setUsername(username);
        impl.setPassword(password);
    }

    /**
     * Creates a new instance with the given connection parameters.
     *
     * @param hostname the hostname of the Asterisk server to connect to.
     * @param port the port where Asterisk listens for incoming Manager API
     *            connections, usually 5038.
     * @param username the username to use for login
     * @param password the password to use for login
     */
    public DefaultManagerConnection(String hostname, int port, String username, String password)
    {
        this();
        impl.setHostname(hostname);
        impl.setPort(port);
        impl.setUsername(username);
        impl.setPassword(password);
    }

    /**
     * Sets the hostname of the Asterisk server to connect to.
     * <p>
     * Default is <code>localhost</code>.
     *
     * @param hostname the hostname to connect to
     */
    public void setHostname(String hostname)
    {
        impl.setHostname(hostname);
    }

    /**
     * Sets the port to use to connect to the Asterisk server. This is the port
     * specified in Asterisk's <code>manager.conf</code> file.
     * <p>
     * Default is 5038.
     *
     * @param port the port to connect to
     */
    public void setPort(int port)
    {
        impl.setPort(port);
    }

    /**
     * Sets whether to use SSL.
     * <p>
     * Default is false.
     *
     * @param ssl <code>true</code> to use SSL for the connection,
     *            <code>false</code> for a plain text connection.
     * @since 0.3
     */
    public void setSsl(boolean ssl)
    {
        impl.setSsl(ssl);
    }

    /**
     * Sets the username to use to connect to the Asterisk server. This is the
     * username specified in Asterisk's <code>manager.conf</code> file.
     *
     * @param username the username to use for login
     */
    public void setUsername(String username)
    {
        impl.setUsername(username);
    }

    /**
     * Sets the password to use to connect to the Asterisk server. This is the
     * password specified in Asterisk's <code>manager.conf</code> file.
     *
     * @param password the password to use for login
     */
    public void setPassword(String password)
    {
        impl.setPassword(password);
    }

    /**
     * Sets the time in milliseconds the synchronous sendAction methods
     * {@link #sendAction(ManagerAction)} will wait for a response before
     * throwing a TimeoutException.
     * <p>
     * Default is 2000.
     *
     * @param defaultTimeout default timeout in milliseconds
     * @deprecated use {@link #setDefaultResponseTimeout(long)} instead
     */
    @Deprecated public void setDefaultTimeout(long defaultTimeout)
    {
        impl.setDefaultResponseTimeout(defaultTimeout);
    }

    /**
     * Sets the time in milliseconds the synchronous method
     * {@link #sendAction(ManagerAction)} will wait for a response before
     * throwing a TimeoutException.
     * <p>
     * Default is 2000.
     *
     * @param defaultResponseTimeout default response timeout in milliseconds
     * @since 0.2
     */
    public void setDefaultResponseTimeout(long defaultResponseTimeout)
    {
        impl.setDefaultResponseTimeout(defaultResponseTimeout);
    }

    /**
     * Sets the time in milliseconds the synchronous method
     * {@link #sendEventGeneratingAction(EventGeneratingAction)} will wait for a
     * response and the last response event before throwing a TimeoutException.
     * <p>
     * Default is 5000.
     *
     * @param defaultEventTimeout default event timeout in milliseconds
     * @since 0.2
     */
    public void setDefaultEventTimeout(long defaultEventTimeout)
    {
        impl.setDefaultEventTimeout(defaultEventTimeout);
    }

    /**
     * This method is deprecated and will be removed in Asterisk-Java 0.4.
     * <p>
     * It does nothing.
     *
     * @deprecated no longer needed as we now use an interrupt based response
     *             checking approach.
     */
    @Deprecated public void setSleepTime(long sleepTime)
    {

    }

    /**
     * Set to <code>true</code> to try reconnecting to ther asterisk serve
     * even if the reconnection attempt threw an AuthenticationFailedException.
     * <p>
     * Default is <code>true</code>.
     */
    public void setKeepAliveAfterAuthenticationFailure(boolean keepAliveAfterAuthenticationFailure)
    {
        impl.setKeepAliveAfterAuthenticationFailure(keepAliveAfterAuthenticationFailure);
    }

    /* Implementation of ManagerConnection interface */

    public String getHostname()
    {
        return impl.getHostname();
    }

    public int getPort()
    {
        return impl.getPort();
    }

    public String getUsername()
    {
        return impl.getUsername();
    }

    public String getPassword()
    {
        return impl.getPassword();
    }

    public AsteriskVersion getVersion()
    {
        return impl.getVersion();
    }

    public boolean isSsl()
    {
        return impl.isSsl();
    }

    public InetAddress getLocalAddress()
    {
        return impl.getLocalAddress();
    }

    public int getLocalPort()
    {
        return impl.getLocalPort();
    }

    public InetAddress getRemoteAddress()
    {
        return impl.getRemoteAddress();
    }

    public int getRemotePort()
    {
        return impl.getRemotePort();
    }

    public void registerUserEventClass(Class<? extends ManagerEvent> userEventClass)
    {
        impl.registerUserEventClass(userEventClass);
    }

    public void setSocketTimeout(int socketTimeout)
    {
        impl.setSocketTimeout(socketTimeout);
    }

    public void setSocketReadTimeout(int socketReadTimeout)
    {
        impl.setSocketReadTimeout(socketReadTimeout);
    }

    public void login() throws IllegalStateException, IOException, AuthenticationFailedException, TimeoutException
    {
        impl.login();
    }

    public void login(String events) throws IllegalStateException, IOException, AuthenticationFailedException,
            TimeoutException
    {
        impl.login(events);
    }

    public void logoff() throws IllegalStateException
    {
        impl.logoff();
    }

    public ManagerResponse sendAction(ManagerAction action) throws IOException, TimeoutException, IllegalArgumentException,
            IllegalStateException
    {
        return impl.sendAction(action);
    }

    public ManagerResponse sendAction(ManagerAction action, long timeout) throws IOException, TimeoutException,
            IllegalArgumentException, IllegalStateException
    {
        return impl.sendAction(action, timeout);
    }

    public void sendAction(ManagerAction action, SendActionCallback callbackHandler) throws IOException,
            IllegalArgumentException, IllegalStateException
    {
        impl.sendAction(action, callbackHandler);
    }

    public ResponseEvents sendEventGeneratingAction(EventGeneratingAction action) throws IOException, EventTimeoutException,
            IllegalArgumentException, IllegalStateException
    {
        return impl.sendEventGeneratingAction(action);
    }

    public ResponseEvents sendEventGeneratingAction(EventGeneratingAction action, long timeout) throws IOException,
            EventTimeoutException, IllegalArgumentException, IllegalStateException
    {
        return impl.sendEventGeneratingAction(action, timeout);
    }

    public void addEventListener(final ManagerEventListener listener)
    {
        impl.addEventListener(listener);
    }

    public void removeEventListener(final ManagerEventListener listener)
    {
        impl.removeEventListener(listener);
    }

    public String getProtocolIdentifier()
    {
        return impl.getProtocolIdentifier();
    }

    public ManagerConnectionState getState()
    {
        return impl.getState();
    }

    @Override
    public String toString()
    {
        final StringBuilder sb = new StringBuilder("DefaultManagerConnection[");
        sb.append("hostname='").append(getHostname()).append("',");
        sb.append("port=").append(getPort()).append("]");
        return sb.toString();
    }
}
TOP

Related Classes of org.asteriskjava.manager.DefaultManagerConnection

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.