Package 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 appropriateSession
based on the defined namespace in the stream element and will then keep reading and routing the received packets.- Author:
- Gaston Dombiak
-
-
Field Summary
Fields Modifier and Type Field Description protected SocketConnection
connection
Reference to the physical connection.protected boolean
directTLS
Indicates if sockets initially will be plain text (false), or ecnrypted (true).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
Constructors Constructor Description SocketReader(PacketRouter router, RoutingTable routingTable, String serverName, Socket socket, SocketConnection connection, boolean useBlockingMode, boolean directTLS)
Creates a dedicated reader for a socket.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description 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.
-
-
-
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.
-
directTLS
protected boolean directTLS
Indicates if sockets initially will be plain text (false), or ecnrypted (true).
-
open
protected boolean open
-
-
Constructor Detail
-
SocketReader
public SocketReader(PacketRouter router, RoutingTable routingTable, String serverName, Socket socket, SocketConnection connection, boolean useBlockingMode, boolean directTLS)
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.directTLS
- false means that the socket initially is a plaintext connection.
-
-
Method Detail
-
run
public void run()
A dedicated thread loop for reading the stream and sending incoming packets to the appropriate router.
-
processIQ
protected void processIQ(org.xmpp.packet.IQ packet) throws UnauthorizedException
Process the received IQ packet. RegisteredPacketInterceptor
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. RegisteredPacketInterceptor
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. RegisteredPacketInterceptor
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()
-
-