|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectjava.lang.Thread
pbx.PBXClient
public class PBXClient
Encapsulates rudimentary functionality of a PBX to list and invite users (peers) to secure calls. The instances of PBXClient class expect to be connected to plain public chat server that distributes (broadcasts their messages (terminated by the new-line) to all other connected users (possible kryptofon peers). Communication with the upper layer (which owns instance of the PBXClient) is done using call-backs over the PBXClient.Context interface.
Nested Class Summary | |
---|---|
static class |
PBXClient.CMType
PBX Signaling Messages' Types |
static interface |
PBXClient.Context
Provides a call-back context for the instance of PBXClient. |
class |
PBXClient.ControlMessage
PBX signaling message sent via call-back to the upper layer |
Nested classes/interfaces inherited from class java.lang.Thread |
---|
java.lang.Thread.State, java.lang.Thread.UncaughtExceptionHandler |
Field Summary | |
---|---|
private PBXClient.Context |
context
Event (call-back) context for this instance of the PBXClient |
private java.lang.String |
host
Host name or IP address of the remote chat server |
private static java.lang.String |
INFO
HTML CSS class for info messages |
private java.lang.String |
myID
Chat client ID when presented to user (== host + ":" + port) |
private java.io.PrintWriter |
out
Output stream to remote server |
private int |
port
TCP port where to connect to on remote chat server |
private boolean |
running
Indicates/enables the thread to be running |
private java.net.Socket |
socket
Instance of the TCP socket to chat server. |
private static java.lang.String |
WARN
HTML CSS class for warning and error messages |
Fields inherited from class java.lang.Thread |
---|
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY |
Constructor Summary | |
---|---|
PBXClient(java.lang.String host,
int port,
PBXClient.Context context)
Creates new instance of PBXClient that posts messages
to specified Context . |
Method Summary | |
---|---|
void |
close()
Closes the connection gracefully |
java.lang.String |
getLocalAddress()
Returns local IP address. |
private void |
parseControlMessage(java.lang.String remoteUserId,
java.lang.String[] args,
java.lang.String original)
Parses control messages. |
private void |
parseInputMessage(java.lang.String message)
Parses input message. |
private void |
report(java.lang.String style,
java.lang.String str)
Reports a system message to log |
private void |
reportIncomingTextMessage(java.lang.String userId,
java.lang.String message)
Reports incoming message |
void |
run()
Connects socket, then reads messages from server while running flag
is enabled. |
void |
send(java.lang.String message)
Sends message (appended with new-line) to chat server |
void |
send(java.lang.String message,
java.lang.String userId)
Sends message (appended with new-line) to chat server prefixed with userId |
void |
sendAccept(java.lang.String remoteUserId,
java.lang.String localIpAddress,
int localUdpPort,
java.lang.String publicKey)
Broadcasts ACCEPT message |
void |
sendBye(java.lang.String remoteUserId,
java.lang.String localIpAddress,
int localUdpPort)
Broadcasts BYE message |
void |
sendInstantMessage(java.lang.String remoteUserId,
java.lang.String encryptedMessage)
Broadcasts IMSG message |
void |
sendInvite(java.lang.String remoteUserId,
java.lang.String localIpAddress,
int localUdpPort,
java.lang.String publicKey)
Broadcasts INVITE message |
void |
sendListPeers(java.lang.String regex)
Broadcasts LIST message (to list potential peers) |
void |
sendRing(java.lang.String remoteUserId,
java.lang.String localIpAddress,
int localUdpPort,
java.lang.String publicKey)
Broadcasts RING message |
void |
start()
Starts the thread. |
Methods inherited from class java.lang.Thread |
---|
activeCount, checkAccess, clone, countStackFrames, currentThread, destroy, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, stop, stop, suspend, toString, yield |
Methods inherited from class java.lang.Object |
---|
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
private static final java.lang.String WARN
private static final java.lang.String INFO
private java.lang.String host
private int port
private java.lang.String myID
private java.io.PrintWriter out
private java.net.Socket socket
private volatile boolean running
private PBXClient.Context context
Constructor Detail |
---|
public PBXClient(java.lang.String host, int port, PBXClient.Context context)
PBXClient
that posts messages
to specified Context
.
host
- host name or IP address of the chat serverport
- TCP portcontext
- where to log messages (also error and info messages)Method Detail |
---|
public java.lang.String getLocalAddress()
public void start()
start
in class java.lang.Thread
public void send(java.lang.String message)
message
- message to be sentpublic void send(java.lang.String message, java.lang.String userId)
message
- message to be sentuserId
- user identifierpublic void close()
private void report(java.lang.String style, java.lang.String str)
private void reportIncomingTextMessage(java.lang.String userId, java.lang.String message)
private void parseInputMessage(java.lang.String message)
[ [ <userId> ] : ] <text-or-control>where default \a userId is
[Anonymous]
.
If the \a text-or-control begins with "[$]" it represents control message
and it will not be displayed to the user.
private void parseControlMessage(java.lang.String remoteUserId, java.lang.String[] args, java.lang.String original)
[$] INVITE local-name remote-ip-address remote-udp-port [ public-key ] [$] RING local-name remote-ip-address remote-udp-port [ public-key ] [$] ACCEPT local-name remote-ip-address remote-udp-port [ secret-key ] [$] BYE local-name [ remote-ip-address [ remote-udp-port ] ] [$] IMSG local-name encrypted-message [$] LIST [ username-regex ] [$] ALIVE
public void sendInvite(java.lang.String remoteUserId, java.lang.String localIpAddress, int localUdpPort, java.lang.String publicKey)
public void sendRing(java.lang.String remoteUserId, java.lang.String localIpAddress, int localUdpPort, java.lang.String publicKey)
public void sendAccept(java.lang.String remoteUserId, java.lang.String localIpAddress, int localUdpPort, java.lang.String publicKey)
public void sendBye(java.lang.String remoteUserId, java.lang.String localIpAddress, int localUdpPort)
public void sendInstantMessage(java.lang.String remoteUserId, java.lang.String encryptedMessage)
public void sendListPeers(java.lang.String regex)
public void run()
running
flag
is enabled. Finally, closes connection in graceful manner.
Incoming messages are dispatched to the owner via the call-back context
(see PBXClient.Context).
run
in interface java.lang.Runnable
run
in class java.lang.Thread
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |