Package org.globus.net

# Class BaseServer

java.lang.Object
org.globus.net.BaseServer

All Implemented Interfaces:
  `Runnable`

Direct Known Subclasses:
  `CallbackHandler`, `GassServer`

public abstract class BaseServer extends Object implements Runnable
This class provides the basics for writing various servers. Note: Sockets created by this server have a 5 minute default timeout. The timeout can be changed using the `setTimeout()` function.

## Field Summary

Fields
Modifier and Type
Field
Description
`protected ServerSocket`
`_server`
`protected boolean`
`accept`
`protected Authorization`
`authorization`
`protected GSSCredential`
`credentials`
`protected org.globus.net.AbstractServerDeactivator`
`deactivator`
A handler for the deactivation framework.
`protected Integer`
`gssMode`
`static final int`
`SO_TIMEOUT`
Socket timeout in milliseconds.
`protected int`
`timeout`
`protected String`
`url`

## Constructor Summary

Constructors
Constructor
Description
`BaseServer()`
`BaseServer(boolean secure, int port)`
`BaseServer(int port)`
`BaseServer(GSSCredential cred, int port)`

## Method Summary

Modifier and Type
Method
Description
`GSSCredential`
`getCredentials()`
`String`
`getHost()`
Returns hostname of this server.
`String`
`getHostname()`
Returns hostname of this server
`int`
`getPort()`
Returns port of this server
`String`
`getProtocol()`
`int`
`getTimeout()`
`String`
`getURL()`
Returns url of this server
`protected abstract void`
`handleConnection(Socket socket)`
This method needs to be implemented by subclasses.
`protected void`
`initialize()`
This method should be called by all subclasses.
`void`
`registerDefaultDeactivator()`
Registers a default deactivation handler.
`void`
`run()`
`void`
`setAuthorization(Authorization auth)`
`void`
`setGssMode(Integer mode)`
`void`
`setTimeout(int timeout)`
Sets timeout for the created sockets.
`void`
`shutdown()`
Stops the server but does not stop all the client threads
`protected void`
`start()`
Starts the server.
`void`
`unregisterDefaultDeactivator()`
Unregisters a default deactivation handler.
`protected Socket`
`wrapSocket(Socket socket)`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### SO_TIMEOUT

public static final int SO_TIMEOUT
Socket timeout in milliseconds.

See Also:
  - Constant Field Values

### accept

protected boolean accept

### _server

protected ServerSocket _server

### url

protected String url

### credentials

protected GSSCredential credentials

### authorization

protected Authorization authorization

### gssMode

protected Integer gssMode

### timeout

protected int timeout

### deactivator

protected org.globus.net.AbstractServerDeactivator deactivator
A handler for the deactivation framework.

## Constructor Details

### BaseServer

public BaseServer() throws IOException

Throws:
  `IOException`

### BaseServer

public BaseServer(int port) throws IOException

Throws:
  `IOException`

### BaseServer

public BaseServer(GSSCredential cred, int port) throws IOException

Throws:
  `IOException`

### BaseServer

public BaseServer(boolean secure, int port) throws IOException

Throws:
  `IOException`

## Method Details

### initialize

protected void initialize()
This method should be called by all subclasses.

### start

protected void start()
Starts the server.

### setTimeout

public void setTimeout(int timeout)
Sets timeout for the created sockets. By default if not set, 5 minute timeout is used.

### getTimeout

public int getTimeout()

### shutdown

public void shutdown()
Stops the server but does not stop all the client threads

### getCredentials

public GSSCredential getCredentials()

### getProtocol

public String getProtocol()

### getURL

public String getURL()
Returns url of this server

Returns:
  url of this server

### getPort

public int getPort()
Returns port of this server

Returns:
  port number

### getHostname

public String getHostname()
Returns hostname of this server

Returns:
  hostname

### getHost

public String getHost()
Returns hostname of this server. The format of the host conforms to RFC 2732, i.e. for a literal IPv6 address, this method will return the IPv6 address enclosed in square brackets ('[' and ']').

Returns:
  hostname

### run

public void run()

Specified by:
  `run` in interface `Runnable`

### wrapSocket

protected Socket wrapSocket(Socket socket) throws GSSException

Throws:
  `GSSException`

### setGssMode

public void setGssMode(Integer mode)

### setAuthorization

public void setAuthorization(Authorization auth)

### handleConnection

protected abstract void handleConnection(Socket socket)
This method needs to be implemented by subclasses. Optimmaly, it should be a non-blocking call starting a separate thread to handle the client. Note that to start an SSL handshake, you need to call socket.getInput(Output) stream().

### registerDefaultDeactivator

public void registerDefaultDeactivator()
Registers a default deactivation handler. It is used to shutdown the server without having a reference to the server. Call Deactivate.deactivateAll() to shutdown all registered servers.

### unregisterDefaultDeactivator

public void unregisterDefaultDeactivator()
Unregisters a default deactivation handler.