radtools.services.haproxy
Class HAProxyLinux

java.lang.Object
  extended by rcf.core.framework.component.DynamicComponent.Abstract
      extended by radtools.services.AbstractRADService
          extended by radtools.services.linux.AbstractLinuxHostedRADService
              extended by radtools.services.haproxy.HAProxyLinux
All Implemented Interfaces:
ConfigWriter, HostedRADService, LinuxHostedRADService, RADService, DynamicBound, DynamicComponent, ReflectedBindable<DynamicComponent>, ReflectedComponent, rcf.core.util.accessor.GUIAccessible

@Revision(value="$Revision: 1.10 $",
          date="$Date: 2006/12/15 20:37:51 $",
          tag="$Name:  $")
public class HAProxyLinux
extends AbstractLinuxHostedRADService
implements ConfigWriter

Provides a RADService abstraction of HAProxy running on an arbitrary linux system. This object includes a number of properties which represent not only the state of the service, but the configuration options for HAProxy.

TODO: Unit tests, Code review, Javadoc review, Seal/Finalize
TODO: equals, hashCode, toStrin

Version:
$Revision: 1.10 $
Author:
Greg Gibeling

Nested Class Summary
 class HAProxyLinux.ConfigTask
          An implementation of TimerTask which is used to schedule updates to the HAProxy configuration file.
protected  class HAProxyLinux.GeneralSink
          A general HAProxyLinux.GeneralSink.PoolsTaskEventSink used to detect changes to the pools property, the servers, which will then result in the creation of a HAProxyLinux.ConfigTask to update the configuration.
static class HAProxyLinux.HAProxyPool
          Abstraction of an application pool as used by HAProxy.
static class HAProxyLinux.HAProxyServer
          Abstraction of an application server for HAProxy.
protected  class HAProxyLinux.State
          TODO: Javadoc
 
Nested classes/interfaces inherited from class radtools.services.AbstractRADService
AbstractRADService.AbstractRADServiceState, AbstractRADService.RefreshTask, AbstractRADService.StateProxy, AbstractRADService.UpdateTask
 
Nested classes/interfaces inherited from interface rcf.core.framework.component.DynamicComponent
DynamicComponent.Abstract, DynamicComponent.Default
 
Nested classes/interfaces inherited from interface rcf.core.framework.component.DynamicBound
DynamicBound.GUIType
 
Field Summary
protected  String executable
          TODO: Javadoc
protected  StrongReference<EventSink<? super rcf.core.util.collection.transaction.CollectionTransaction>> generalSink
          TODO: Javadoc
 rcf.core.util.map.HashSetMap<HAProxyLinux.HAProxyPool,String> pools
          TODO: Javadoc
 
Fields inherited from class radtools.services.AbstractRADService
composition, dependency, management, proxy, state, window
 
Fields inherited from class rcf.core.framework.component.DynamicComponent.Abstract
component, operations, properties
 
Constructor Summary
HAProxyLinux(LinuxSystem _host, RADService _composition, String _executable)
          TODO: Javadoc
 
Method Summary
private  void config()
          TODO: Javadoc
 boolean generate(OutputStream _out, String separator)
          TODO: Javadoc
 boolean isConcrete()
          Determine if this RADService is a concrete service, or simply an arbitrary abstraction built for management purposes.
 DynamicProperty<RADService.State> radServiceState()
          Returns the dynamic property object for the state of this service.
 String toString()
           
 
Methods inherited from class radtools.services.linux.AbstractLinuxHostedRADService
host
 
Methods inherited from class radtools.services.AbstractRADService
check, communication, composition, dependency, icon, management, radTools, refresh, update, window
 
Methods inherited from class rcf.core.framework.component.DynamicComponent.Abstract
bind, component, gui, interfaces, isInstance, o, operations, popupMenu, properties
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface radtools.services.RADService
communication, composition, dependency, management, refresh, update, window
 
Methods inherited from interface rcf.core.framework.component.DynamicComponent
component, operations, properties
 
Methods inherited from interface rcf.core.framework.component.DynamicBound
gui
 
Methods inherited from interface rcf.core.util.accessor.GUIAccessible
icon, popupMenu
 
Methods inherited from interface rcf.core.framework.component.ReflectedComponent
interfaces, isInstance
 
Methods inherited from interface rcf.core.framework.component.ReflectedBindable
bind
 

Field Detail

generalSink

protected final StrongReference<EventSink<? super rcf.core.util.collection.transaction.CollectionTransaction>> generalSink
TODO: Javadoc


pools

@StaticProperty(value="HAProxy.Pools",
                mode=Read)
public final rcf.core.util.map.HashSetMap<HAProxyLinux.HAProxyPool,String> pools
TODO: Javadoc


executable

protected final String executable
TODO: Javadoc

Constructor Detail

HAProxyLinux

public HAProxyLinux(LinuxSystem _host,
                    RADService _composition,
                    String _executable)
TODO: Javadoc

Parameters:
_host -
_composition -
_executable -
Method Detail

config

private void config()
TODO: Javadoc


generate

public boolean generate(OutputStream _out,
                        String separator)
Description copied from interface: ConfigWriter
TODO: Javadoc

Specified by:
generate in interface ConfigWriter
Parameters:
_out - The output stream to write the configuration to.
separator - The line separator to use. Must be a parameter since the file may be destined for a machine other than the one it is being written on.
Returns:

isConcrete

public boolean isConcrete()
Description copied from interface: RADService
Determine if this RADService is a concrete service, or simply an arbitrary abstraction built for management purposes.

Specified by:
isConcrete in interface RADService
Returns:
true if this object represents a concrete service. false if this object represents an arbitrary abstraction, and does not correspond to a real service.

radServiceState

public DynamicProperty<RADService.State> radServiceState()
Description copied from interface: RADService
Returns the dynamic property object for the state of this service. The dynamic property can then be used to query the actual state, or to set it. There are few restrictions on state, except that it must be RADService.State.Unknown when RADService.management().parent().get().radServiceState().get() != RADService.State.Running.

Note that the ImmutableSingletonInterface.get() and SingletonInterface#set() methods on the dynamic property refer to the offline state of this service. The RADService.refresh() and RADService.update(boolean, RADService.State) methods can be used to synchronize this state with the state of the actual service. SingletonInterface#set() will schedule a call to RADService.update(boolean, RADService.State) so that the service state will be updated in the future.

Specified by:
radServiceState in interface RADService
Returns:
The dynamic property which represents the offline state of this service.

toString

public String toString()
Overrides:
toString in class Object