Crossfire JXClient, Trunk
Public Member Functions | Private Member Functions | Private Attributes | List of all members
Client Class Reference
Collaboration diagram for Client:
Collaboration graph

Public Member Functions

void appendMessage (String message)
 
 Client (AsynchronousSocketChannel channel, ClientReader reader)
 
void close ()
 
String getUserName ()
 
String nextMessage ()
 
void read (CompletionHandler< Integer, ? super ByteBuffer > completionHandler)
 
void run ()
 
void setReader (ClientReader reader)
 
void setUserName (String userName)
 
void writeMessageFrom (Client client, String message)
 
void writeStringMessage (String string)
 

Private Member Functions

void writeBuffer (ByteBuffer buffer)
 
void writeFromQueue ()
 
void writeMessage (final ByteBuffer buffer)
 

Private Attributes

final AsynchronousSocketChannel channel
 
final StringBuilder messageBuffer = new StringBuilder()
 
final Queue< ByteBuffer > queue = new LinkedList<ByteBuffer>()
 
AtomicReference< ClientReaderreader
 
String userName
 
boolean writing = false
 

Detailed Description

Client represents a remote connection to the chat server. It contains methods for reading and writing messages from the channel. Messages are considered to be separated by newline, so incomplete messages are buffered in the

.

All reads and writes are asynchronous and uses the nio2 asynchronous elements.

Definition at line 59 of file Client.java.

Constructor & Destructor Documentation

◆ Client()

Client.Client ( AsynchronousSocketChannel  channel,
ClientReader  reader 
)

Definition at line 68 of file Client.java.

References channel, and reader.

Member Function Documentation

◆ appendMessage()

void Client.appendMessage ( String  message)

Definition at line 192 of file Client.java.

References messageBuffer.

◆ close()

void Client.close ( )

Closes the channel

Definition at line 165 of file Client.java.

References channel.

◆ getUserName()

String Client.getUserName ( )

Definition at line 188 of file Client.java.

References userName.

◆ nextMessage()

String Client.nextMessage ( )
Returns
the next newline separated message in the buffer. null is returned if the buffer doesn't contain any newline.

Definition at line 202 of file Client.java.

References messageBuffer.

◆ read()

void Client.read ( CompletionHandler< Integer, ? super ByteBuffer >  completionHandler)

Enqueue a read

Parameters
completionHandlercallback on completed read

Definition at line 154 of file Client.java.

References channel.

◆ run()

void Client.run ( )

Run the current states actions.

Definition at line 176 of file Client.java.

References reader.

◆ setReader()

void Client.setReader ( ClientReader  reader)

Definition at line 184 of file Client.java.

References reader.

◆ setUserName()

void Client.setUserName ( String  userName)

Definition at line 180 of file Client.java.

References userName.

◆ writeBuffer()

void Client.writeBuffer ( ByteBuffer  buffer)
private

Definition at line 113 of file Client.java.

References channel, result, and writeFromQueue().

Referenced by writeFromQueue().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ writeFromQueue()

void Client.writeFromQueue ( )
private

Definition at line 97 of file Client.java.

References queue, writeBuffer(), and writing.

Referenced by writeBuffer(), and writeMessage().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ writeMessage()

void Client.writeMessage ( final ByteBuffer  buffer)
private

Enqueues a write of the buffer to the channel. The call is asynchronous so the buffer is not safe to modify after passing the buffer here.

Parameters
bufferthe buffer to send to the channel

Definition at line 80 of file Client.java.

References queue, writeFromQueue(), and writing.

Referenced by writeStringMessage().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ writeMessageFrom()

void Client.writeMessageFrom ( Client  client,
String  message 
)

Send a message from a specific client

Parameters
clientthe message is sent from
messageto send

Definition at line 144 of file Client.java.

References client, reader, and writeStringMessage().

Here is the call graph for this function:

◆ writeStringMessage()

void Client.writeStringMessage ( String  string)

Sends a message

Parameters
stringthe message

Definition at line 135 of file Client.java.

References writeMessage().

Referenced by writeMessageFrom().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ channel

final AsynchronousSocketChannel Client.channel
private

Definition at line 60 of file Client.java.

Referenced by Client(), close(), read(), and writeBuffer().

◆ messageBuffer

final StringBuilder Client.messageBuffer = new StringBuilder()
private

Definition at line 63 of file Client.java.

Referenced by appendMessage(), and nextMessage().

◆ queue

final Queue<ByteBuffer> Client.queue = new LinkedList<ByteBuffer>()
private

Definition at line 65 of file Client.java.

Referenced by writeFromQueue(), and writeMessage().

◆ reader

AtomicReference<ClientReader> Client.reader
private

Definition at line 61 of file Client.java.

Referenced by Client(), run(), setReader(), and writeMessageFrom().

◆ userName

String Client.userName
private

Definition at line 62 of file Client.java.

Referenced by getUserName(), and setUserName().

◆ writing

boolean Client.writing = false
private

Definition at line 66 of file Client.java.

Referenced by writeFromQueue(), and writeMessage().


The documentation for this class was generated from the following file:
Client
Definition: Client.java:59