
org.coos.messaging.Plugin Maven / Gradle / Ivy
The newest version!
/**
* COOS - Connected Objects Operating System (www.connectedobjects.org).
*
* Copyright (C) 2009 Telenor ASA and Tellu AS. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This library is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program 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 Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see .
*
* You may also contact one of the following for additional information:
* Telenor ASA, Snaroyveien 30, N-1331 Fornebu, Norway (www.telenor.no)
* Tellu AS, Hagalokkveien 13, N-1383 Asker, Norway (www.tellu.no)
*/
package org.coos.messaging;
import java.util.Vector;
import org.coos.messaging.jmx.ManagedObject;
import org.coos.messaging.jmx.ManagementFactory;
/**
* The Plugin, A holder class for all information associated with a plugin.
*
* @author Knut Eilif Husa, Tellu AS
*/
public class Plugin {
public static final int DEFAULT_STARTLEVEL = 10;
private Endpoint endpoint;
private Vector channels = new Vector();
private int startLevel = DEFAULT_STARTLEVEL;
/*
* The object used for Monitoring and Management of the COOS instance (i.e. using JMX)
*/
private ManagedObject managedObject = null;
public String getName() {
return endpoint.getName();
}
public Endpoint getEndpoint() {
return endpoint;
}
public void setEndpoint(Endpoint endpoint) {
this.endpoint = endpoint;
endpoint.setPlugin(this);
}
public String getEndpointState() {
if (endpoint != null) {
return endpoint.getEndpointState();
}
return null;
}
public int getStartLevel() {
return startLevel;
}
public void setStartLevel(int startLevel) {
this.startLevel = startLevel;
}
public void addChannel(Channel channel) {
channels.addElement(channel);
}
public Vector getChannels() {
return channels;
}
public void removeChannel(Channel channel) {
channels.removeElement(channel);
}
/**
* Connects all channels. Then starts the endpoint.
* @throws ConnectingException Exception thrown if any of the
* channels fails in connecting
*/
public void connect() throws ConnectingException {
for (int i = 0; i < channels.size(); i++) {
Channel channel = (Channel) channels.elementAt(i);
channel.connect(endpoint);
}
endpoint.initializeEndpoint();
/*
* Register plugin for management.
*/
managedObject = ManagementFactory.getPlatformManagementService().registerPlugin(this);
}
/**
* Connects the provided Channel. Does NOT start the endpoint
* @param channel the channel to connect
* @throws ConnectingException thrown if the channel fails in connecting
*/
public void connect(Channel channel) throws ConnectingException {
channel.connect(endpoint);
}
/**
* Shuts down a specific channel. Does not bring down the endpoint
* @param channel
*/
public void disconnect(Channel channel) {
channel.disconnect();
}
/**
* Shuts down all channels connected to this endpoint. Shuts down the
* endpoint
*/
public void disconnect() {
endpoint.shutDownEndpoint();
for (int i = 0; i < channels.size(); i++) {
Channel channel = (Channel) channels.elementAt(i);
channel.disconnect();
}
/*
* Unregister plugin from management.
*/
if (managedObject != null) {
ManagementFactory.getPlatformManagementService().unregister(managedObject);
}
}
public boolean isConnected() {
boolean connected = true;
for (int i = 0; i < channels.size(); i++) {
Channel channel = (Channel) channels.elementAt(i);
connected = connected && channel.isConnected();
}
return connected;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy