Overview | Package | Class | Tree | Deprecated | Index | Help
| Openfire 3.7.1 Javadoc
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.jivesoftware.openfire.net
Class SocketReader

    java.lang.Object
      org.jivesoftware.openfire.net.SocketReader

All Implemented Interfaces:
  Runnable

Direct Known Subclasses:
  ServerSocketReader

    public abstract class SocketReader

extends Object
implements Runnable

A SocketReader creates the appropriate `Session` based on the defined namespace in the stream element and will then keep reading and routing the received packets.

Author:
  Gaston Dombiak

Field Summary
`protected SocketConnection` | `connection` Reference to the physical connection.
`protected boolean` | `open`
`protected String` | `serverName` Server name for which we are attending clients.
`protected LocalSession` | `session` Session associated with the socket reader.

Constructor Summary
`SocketReader(PacketRouter router, RoutingTable routingTable, String serverName, Socket socket, SocketConnection connection, boolean useBlockingMode)` Creates a dedicated reader for a socket.

Method Summary
`protected void` | `createSession()` Uses the XPP to grab the opening stream tag and create an active session object.
`String` | `getExtraNamespaces()`
`protected void` | `process(org.dom4j.Element doc)`
`protected void` | `processIQ(org.xmpp.packet.IQ packet)` Process the received IQ packet.
`protected void` | `processMessage(org.xmpp.packet.Message packet)` Process the received Message packet.
`protected void` | `processPresence(org.xmpp.packet.Presence packet)` Process the received Presence packet.
`void` | `run()` A dedicated thread loop for reading the stream and sending incoming packets to the appropriate router.
`protected void` | `shutdown()` Notification message indicating that the SocketReader is shutting down.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### session

    protected LocalSession session

  Session associated with the socket reader.

### connection

    protected SocketConnection connection

  Reference to the physical connection.

### serverName

    protected String serverName

  Server name for which we are attending clients.

### open

    protected boolean open

Constructor Detail

### SocketReader

    public SocketReader(PacketRouter router,
                        RoutingTable routingTable,
                        String serverName,
                        Socket socket,
                        SocketConnection connection,
                        boolean useBlockingMode)

  Creates a dedicated reader for a socket.

  Parameters:
    `router` - the router for sending packets that were read.
    `routingTable` - the table that keeps routes to registered services.
    `serverName` - the name of the server this socket is working for.
    `socket` - the socket to read from.
    `connection` - the connection being read.
    `useBlockingMode` - true means that the server will use a thread per connection.

Method Detail

### run

    public void run()

  A dedicated thread loop for reading the stream and sending incoming packets to the appropriate router.

  Specified by:
    `run` in interface `Runnable`

### process

    protected void process(org.dom4j.Element doc)
                    throws Exception

  Throws:
    `Exception`

### processIQ

    protected void processIQ(org.xmpp.packet.IQ packet)
                      throws UnauthorizedException

  Process the received IQ packet. Registered `PacketInterceptor` will be invoked before and after the packet was routed.

  Subclasses may redefine this method for different reasons such as modifying the sender of the packet to avoid spoofing, rejecting the packet or even process the packet in another thread.

  Parameters:
    `packet` - the received packet.
  Throws:
    `UnauthorizedException` - if the connection required security but was not secured.

### processPresence

    protected void processPresence(org.xmpp.packet.Presence packet)
                            throws UnauthorizedException

  Process the received Presence packet. Registered `PacketInterceptor` will be invoked before and after the packet was routed.

  Subclasses may redefine this method for different reasons such as modifying the sender of the packet to avoid spoofing, rejecting the packet or even process the packet in another thread.

  Parameters:
    `packet` - the received packet.
  Throws:
    `UnauthorizedException` - if the connection required security but was not secured.

### processMessage

    protected void processMessage(org.xmpp.packet.Message packet)
                           throws UnauthorizedException

  Process the received Message packet. Registered `PacketInterceptor` will be invoked before and after the packet was routed.

  Subclasses may redefine this method for different reasons such as modifying the sender of the packet to avoid spoofing, rejecting the packet or even process the packet in another thread.

  Parameters:
    `packet` - the received packet.
  Throws:
    `UnauthorizedException` - if the connection required security but was not secured.

### createSession

    protected void createSession()
                          throws UnauthorizedException,
                                 org.xmlpull.v1.XmlPullParserException,
                                 IOException

  Uses the XPP to grab the opening stream tag and create an active session object. The session to create will depend on the sent namespace. In all cases, the method obtains the opening stream tag, checks for errors, and either creates a session or returns an error and kills the connection. If the connection remains open, the XPP will be set to be ready for the first packet. A call to next() should result in an START_TAG state with the first packet in the stream.

  Throws:
    `UnauthorizedException` - if the connection required security but was not secured.
    `org.xmlpull.v1.XmlPullParserException` - if there was an XML error while creating the session.
    `IOException` - if an IO error occured while creating the session.

### shutdown

    protected void shutdown()

  Notification message indicating that the SocketReader is shutting down. The thread will stop reading and processing new requests. Subclasses may want to redefine this message for releasing any resource they might need.

### getExtraNamespaces

    public String getExtraNamespaces()

Overview | Package | Class | Tree | Deprecated | Index | Help
| Openfire 3.7.1 Javadoc
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2003-2008 Jive Software.