/*
 * Copyright (c) 1999, 2007, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.  Oracle designates this
 * particular file as subject to the "Classpath" exception as provided
 * by Oracle in the LICENSE file that accompanied this code.
 *
 * This code is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */


package com.sun.jmx.snmp.daemon;



Defines generic behaviour for the server part of a connector or an adaptor. Most connectors or adaptors extend CommunicatorServer and inherit this behaviour. Connectors or adaptors that do not fit into this model do not extend CommunicatorServer.

An CommunicatorServer is an active object, it listens for client requests and processes them in its own thread. When necessary, a CommunicatorServer creates other threads to process multiple requests concurrently.

A CommunicatorServer object can be stopped by calling the stop method. When it is stopped, the CommunicatorServer no longer listens to client requests and no longer holds any thread or communication resources. It can be started again by calling the start method.

A CommunicatorServer has a state property which reflects its activity.

CommunicatorServer State
stopped OFFLINE
starting STARTING
running ONLINE
stopping STOPPING

The STARTING state marks the transition from OFFLINE to ONLINE.

The STOPPING state marks the transition from ONLINE to OFFLINE. This occurs when the CommunicatorServer is finishing or interrupting active requests.

A CommunicatorServer may serve several clients concurrently. The number of concurrent clients can be limited using the property maxActiveClientCount. The default value of this property is defined by the subclasses.

When a CommunicatorServer is unregistered from the MBeanServer, it is stopped automatically.

This API is a Sun Microsystems internal API and is subject to change without notice.

/** * Defines generic behaviour for the server * part of a connector or an adaptor. Most connectors or adaptors extend <CODE>CommunicatorServer</CODE> * and inherit this behaviour. Connectors or adaptors that do not fit into this model do not extend * <CODE>CommunicatorServer</CODE>. * <p> * An <CODE>CommunicatorServer</CODE> is an active object, it listens for client requests * and processes them in its own thread. When necessary, a <CODE>CommunicatorServer</CODE> * creates other threads to process multiple requests concurrently. * <p> * A <CODE>CommunicatorServer</CODE> object can be stopped by calling the <CODE>stop</CODE> * method. When it is stopped, the <CODE>CommunicatorServer</CODE> no longer listens to client * requests and no longer holds any thread or communication resources. * It can be started again by calling the <CODE>start</CODE> method. * <p> * A <CODE>CommunicatorServer</CODE> has a <CODE>state</CODE> property which reflects its * activity. * <p> * <TABLE> * <TR><TH>CommunicatorServer</TH> <TH>State</TH></TR> * <TR><TD><CODE>stopped</CODE></TD> <TD><CODE>OFFLINE</CODE></TD></TR> * <TR><TD><CODE>starting</CODE></TD> <TD><CODE>STARTING</CODE></TD></TR> * <TR><TD><CODE>running</CODE></TD> <TD><CODE>ONLINE</CODE></TD></TR> * <TR><TD><CODE>stopping</CODE></TD> <TD><CODE>STOPPING</CODE></TD></TR> * </TABLE> * <p> * The <CODE>STARTING</CODE> state marks the transition from <CODE>OFFLINE</CODE> to * <CODE>ONLINE</CODE>. * <p> * The <CODE>STOPPING</CODE> state marks the transition from <CODE>ONLINE</CODE> to * <CODE>OFFLINE</CODE>. This occurs when the <CODE>CommunicatorServer</CODE> is * finishing or interrupting active requests. * <p> * A <CODE>CommunicatorServer</CODE> may serve several clients concurrently. The * number of concurrent clients can be limited using the property * <CODE>maxActiveClientCount</CODE>. The default value of this property is * defined by the subclasses. * <p> * When a <CODE>CommunicatorServer</CODE> is unregistered from the MBeanServer, * it is stopped automatically. * * <p><b>This API is a Sun Microsystems internal API and is subject * to change without notice.</b></p> */
public interface CommunicatorServerMBean {
Starts this CommunicatorServer.

Has no effect if this CommunicatorServer is ONLINE or STOPPING.

/** * Starts this <CODE>CommunicatorServer</CODE>. * <p> * Has no effect if this <CODE>CommunicatorServer</CODE> is <CODE>ONLINE</CODE> or * <CODE>STOPPING</CODE>. */
public void start() ;
Stops this CommunicatorServer.

Has no effect if this CommunicatorServer is OFFLINE or STOPPING.

/** * Stops this <CODE>CommunicatorServer</CODE>. * <p> * Has no effect if this <CODE>CommunicatorServer</CODE> is <CODE>OFFLINE</CODE> or * <CODE>STOPPING</CODE>. */
public void stop() ;
Tests if the CommunicatorServer is active.
Returns:True if connector is ONLINE; false otherwise.
/** * Tests if the <CODE>CommunicatorServer</CODE> is active. * * @return True if connector is <CODE>ONLINE</CODE>; false otherwise. */
public boolean isActive() ;
Waits untill either the State attribute of this MBean equals the specified state parameter, or the specified timeOut has elapsed. The method waitState returns with a boolean value indicating whether the specified state parameter equals the value of this MBean's State attribute at the time the method terminates. Two special cases for the timeOut parameter value are:
  • if timeOut is negative then waitState returns immediately (i.e. does not wait at all),
  • if timeOut equals zero then waitState waits untill the value of this MBean's State attribute is the same as the state parameter (i.e. will wait indefinitely if this condition is never met).
Params:
  • state – The value of this MBean's State attribute to wait for. state can be one of:
    • CommunicatorServer.OFFLINE,
    • CommunicatorServer.ONLINE,
    • CommunicatorServer.STARTING,
    • CommunicatorServer.STOPPING.
  • timeOut – The maximum time to wait for, in milliseconds, if positive. Infinite time out if 0, or no waiting at all if negative.
Returns:true if the value of this MBean's State attribute is the same as the state parameter; false otherwise.
/** * Waits untill either the State attribute of this MBean equals the specified <VAR>state</VAR> parameter, * or the specified <VAR>timeOut</VAR> has elapsed. The method <CODE>waitState</CODE> returns with a boolean value indicating whether * the specified <VAR>state</VAR> parameter equals the value of this MBean's State attribute at the time the method terminates. * * Two special cases for the <VAR>timeOut</VAR> parameter value are: * <UL><LI> if <VAR>timeOut</VAR> is negative then <CODE>waitState</CODE> returns immediately (i.e. does not wait at all),</LI> * <LI> if <VAR>timeOut</VAR> equals zero then <CODE>waitState</CODE> waits untill the value of this MBean's State attribute * is the same as the <VAR>state</VAR> parameter (i.e. will wait indefinitely if this condition is never met).</LI></UL> * * @param state The value of this MBean's State attribute * to wait for. <VAR>state</VAR> can be one of: * <ul> * <li><CODE>CommunicatorServer.OFFLINE</CODE>,</li> * <li><CODE>CommunicatorServer.ONLINE</CODE>,</li> * <li><CODE>CommunicatorServer.STARTING</CODE>,</li> * <li><CODE>CommunicatorServer.STOPPING</CODE>.</li> * </ul> * @param timeOut The maximum time to wait for, in * milliseconds, if positive. * Infinite time out if 0, or no waiting at all if negative. * * @return true if the value of this MBean's State attribute is the * same as the <VAR>state</VAR> parameter; false otherwise. */
public boolean waitState(int state , long timeOut) ;
Gets the state of this CommunicatorServer as an integer.
Returns:ONLINE, OFFLINE, STARTING or STOPPING.
/** * Gets the state of this <CODE>CommunicatorServer</CODE> as an integer. * * @return <CODE>ONLINE</CODE>, <CODE>OFFLINE</CODE>, <CODE>STARTING</CODE> or <CODE>STOPPING</CODE>. */
public int getState() ;
Gets the state of this CommunicatorServer as a string.
Returns:One of the strings "ONLINE", "OFFLINE", "STARTING" or "STOPPING".
/** * Gets the state of this <CODE>CommunicatorServer</CODE> as a string. * * @return One of the strings "ONLINE", "OFFLINE", "STARTING" or "STOPPING". */
public String getStateString() ;
Gets the host name used by this CommunicatorServer.
Returns:The host name used by this CommunicatorServer.
/** * Gets the host name used by this <CODE>CommunicatorServer</CODE>. * * @return The host name used by this <CODE>CommunicatorServer</CODE>. */
public String getHost() ;
Gets the port number used by this CommunicatorServer.
Returns:The port number used by this CommunicatorServer.
/** * Gets the port number used by this <CODE>CommunicatorServer</CODE>. * * @return The port number used by this <CODE>CommunicatorServer</CODE>. */
public int getPort() ;
Sets the port number used by this CommunicatorServer.
Params:
  • port – The port number used by this CommunicatorServer.
Throws:
/** * Sets the port number used by this <CODE>CommunicatorServer</CODE>. * * @param port The port number used by this <CODE>CommunicatorServer</CODE>. * * @exception java.lang.IllegalStateException This method has been invoked * while the communicator was ONLINE or STARTING. */
public void setPort(int port) throws java.lang.IllegalStateException ;
Gets the protocol being used by this CommunicatorServer.
Returns:The protocol as a string.
/** * Gets the protocol being used by this <CODE>CommunicatorServer</CODE>. * @return The protocol as a string. */
public abstract String getProtocol() ; }