3 import java.io.IOException;
4 import java.net.InetSocketAddress;
5 import java.net.SocketAddress;
6 import java.util.concurrent.TimeoutException;
13 private volatile boolean active =
true;
14 private volatile boolean markClosed =
false;
17 SocketAddress sockAddr =
new InetSocketAddress(host, port);
21 lspSocket =
new LspSocketImpl(0);
23 conn = lspSocket.connect(sockAddr, params,
new ClientTriggers());
25 }
catch (TimeoutException e) {
45 return lspSocket.receive().getPayload();
55 public void write(byte[] payload) {
60 conn.incSendMissing();
80 Thread.sleep(params.getEpoch());
81 }
catch (InterruptedException e) {
88 private void realClose() {
91 this.lspSocket.close();
94 private void checkActive() {
95 if (!active || markClosed)
96 throw new ClosedConnectionException();
99 private final class LspSocketImpl
extends LspSocket {
100 LspSocketImpl(
int port)
throws IOException {
110 LspConnection usedConnection(
short connId) {
111 if (conn != null && conn.getId() == connId) {
119 private final class ClientTriggers
implements ConnectionTriggers {
121 public void doEpochActions() {
122 Helpers.resendData(lspSocket, conn);
123 Helpers.resendAck(lspSocket, conn);
127 public void doCloseConnection() {
Serviço de entrada e saída de pacotes.
Representa uma conexão LSP.
byte[] read()
Devolve um vetor de bytes de uma mensagem enviada pelo lado servidor.
void close()
Encerra a conexão.
short getConnId()
Devolve o Id da conexão.
void write(byte[] payload)
Envia uma mensagen para o lado servidor como um vetor de bytes.
static final LspParams defaultParams()
int getSendMissing()
Número de mensagens na fila, mas faltam enviar.
LspClient(String host, int port, LspParams params)