Serviço de entrada e saída de pacotes.
Mais...
|
| static final byte | CONNECT = 0 |
| |
| static final byte | DATA = 1 |
| |
| static final byte | ACK = 2 |
| |
|
| | LspSocket (int port, int queueSize) throws IOException |
| | Inicia um LspSocket. Mais...
|
| |
| | LspSocket (int port) throws IOException |
| | Inicia um LspSocket. Mais...
|
| |
| abstract boolean | isActive () |
| | Indica até quando o serviço será executado. Mais...
|
| |
| final void | close () |
| |
| final LspConnection | connect (SocketAddress sockAddr, LspParams params, ConnectionTriggers triggers) throws TimeoutException |
| | Tenta estabelecer conexão com um servidor LSP, reenviando solicitação a cada época, até completar o limite da época. Mais...
|
| |
| void | dgramReceiveConnect (final SocketAddress sockAddr, final ByteBuffer buf) |
| | Tratamento de um pacote do tipo CONNECT recebido. Mais...
|
| |
| void | dgramReceiveData (final SocketAddress sockAddr, final ByteBuffer buf) |
| | Tratamento de um pacote do tipo DATA recebido. Mais...
|
| |
| void | dgramReceiveAck (final SocketAddress sockAddr, final ByteBuffer buf) |
| | Tratamento de um pacote do tipo ACK recebido. Mais...
|
| |
| final void | dgramSendData (final LspConnection conn, final short seqNum, final byte[] payload) |
| |
| final void | dgramSendData (final InternalPack p) |
| |
| final void | dgramSendAck (final LspConnection conn, final short seqNum) |
| |
| final void | dgramSendAck (final InternalPack p) |
| |
| abstract LspConnection | usedConnection (short connId) |
| | Obtém o objeto LspConnection em uso. Mais...
|
| |
| int | getPort () |
| |
|
| static final byte[] | payload (final ByteBuffer buf) |
| | Helper para obter um array de bytes com o resto do ByteBuffer. Mais...
|
| |
Serviço de entrada e saída de pacotes.
Classe abstrata.
- Autor
- Wagner Macedo
Definição na linha 26 do arquivo LspSocket.java.
| lsp.LspSocket.LspSocket |
( |
int |
port, |
|
|
int |
queueSize |
|
) |
| throws IOException |
|
package |
Inicia um LspSocket.
- Parâmetros
-
| port | Porta onde o socket estará vinculado |
| queueSize | Tamanho inicial das filas de entrada e saída |
- Exceções
-
Definição na linha 66 do arquivo LspSocket.java.
68 this.socket =
new DatagramSocket(port);
69 this.port = this.socket.getLocalPort();
70 this.inputQueue =
new LinkedBlockingQueue<>(queueSize);
71 this.outputQueue =
new LinkedBlockingDeque<>(queueSize);
74 this.inputThread =
new Thread(
new InputTask());
75 this.inputThread.setDaemon(
true);
76 this.inputThread.start();
79 this.outputThread =
new Thread(
new OutputTask());
80 this.outputThread.setDaemon(
true);
81 this.outputThread.start();
| lsp.LspSocket.LspSocket |
( |
int |
port | ) |
throws IOException |
|
package |
Inicia um LspSocket.
- Parâmetros
-
| port | Porta onde o socket estará vinculado |
- Exceções
-
Definição na linha 90 do arquivo LspSocket.java.
91 this(port, QUEUE_ZISE);
| final void lsp.LspSocket.close |
( |
| ) |
|
|
package |
Definição na linha 102 do arquivo LspSocket.java.
106 inputThread.interrupt();
107 outputThread.interrupt();
Tenta estabelecer conexão com um servidor LSP, reenviando solicitação a cada época, até completar o limite da época.
Definição na linha 118 do arquivo LspSocket.java.
120 final ConnectTask task =
new ConnectTask(sockAddr, params);
124 synchronized (connectLock) {
126 if (this.connectTask == null) {
127 this.connectTask = task;
133 Thread.sleep(params.getEpoch());
139 final ExecutorService exec = Executors.newSingleThreadExecutor();
140 final Future<Short>
id = exec.submit(task);
144 final short connId = id.get();
145 return new LspConnection(connId, sockAddr, params, triggers);
149 catch (ExecutionException e) {
150 if (e.getCause() instanceof TimeoutException) {
151 throw (TimeoutException) e.getCause().fillInStackTrace();
153 throw new RuntimeException(e);
161 this.connectTask = null;
164 }
catch (InterruptedException e) {}
abstract boolean isActive()
Indica até quando o serviço será executado.
| void lsp.LspSocket.dgramReceiveAck |
( |
final SocketAddress |
sockAddr, |
|
|
final ByteBuffer |
buf |
|
) |
| |
|
package |
Tratamento de um pacote do tipo ACK recebido.
Definição na linha 228 do arquivo LspSocket.java.
229 final short connId = buf.getShort();
234 final short seqNum = buf.getShort();
242 final ConnectTask task = connectTask;
243 if (task != null && connId > 0 && buf.getShort() == 0
244 && sockAddr.equals(task.sockAddr)) {
abstract LspConnection usedConnection(short connId)
Obtém o objeto LspConnection em uso.
| void lsp.LspSocket.dgramReceiveConnect |
( |
final SocketAddress |
sockAddr, |
|
|
final ByteBuffer |
buf |
|
) |
| |
|
package |
Tratamento de um pacote do tipo CONNECT recebido.
Esse método deve ser sobrescrito pelo servidor
Definição na linha 199 do arquivo LspSocket.java.
| void lsp.LspSocket.dgramReceiveData |
( |
final SocketAddress |
sockAddr, |
|
|
final ByteBuffer |
buf |
|
) |
| |
|
package |
Tratamento de um pacote do tipo DATA recebido.
Definição na linha 203 do arquivo LspSocket.java.
207 if (conn != null && !conn.isClosed()) {
208 short seqNum = buf.getShort();
210 InternalPack pack =
new InternalPack(conn, seqNum, payload);
214 if (inputQueue.offer(pack)) {
216 conn.received(seqNum);
static final byte[] payload(final ByteBuffer buf)
Helper para obter um array de bytes com o resto do ByteBuffer.
abstract LspConnection usedConnection(short connId)
Obtém o objeto LspConnection em uso.
final void dgramSendAck(final LspConnection conn, final short seqNum)
| final void lsp.LspSocket.dgramSendAck |
( |
final LspConnection |
conn, |
|
|
final short |
seqNum |
|
) |
| |
|
package |
| final void lsp.LspSocket.dgramSendAck |
( |
final InternalPack |
p | ) |
|
|
package |
Definição na linha 287 do arquivo LspSocket.java.
final void dgramSendAck(final LspConnection conn, final short seqNum)
| final void lsp.LspSocket.dgramSendData |
( |
final LspConnection |
conn, |
|
|
final short |
seqNum, |
|
|
final byte[] |
payload |
|
) |
| |
|
package |
Definição na linha 271 do arquivo LspSocket.java.
272 if (
payload.length > LEN_PAYLOAD) {
273 throw new IllegalArgumentException(
"Payload não pode ser maior que " + LEN_PAYLOAD);
static final byte[] payload(final ByteBuffer buf)
Helper para obter um array de bytes com o resto do ByteBuffer.
| final void lsp.LspSocket.dgramSendData |
( |
final InternalPack |
p | ) |
|
|
package |
Definição na linha 279 do arquivo LspSocket.java.
280 dgramSendData(p.getConnection(), p.getSeqNum(), p.getPayload());
final void dgramSendData(final LspConnection conn, final short seqNum, final byte[] payload)
| int lsp.LspSocket.getPort |
( |
| ) |
|
|
package |
| abstract boolean lsp.LspSocket.isActive |
( |
| ) |
|
|
packagepure virtual |
Indica até quando o serviço será executado.
Esse método deve ser implementado em uma subclasse.
- Retorna
- false para parar o serviço
| static final byte [] lsp.LspSocket.payload |
( |
final ByteBuffer |
buf | ) |
|
|
staticpackage |
Helper para obter um array de bytes com o resto do ByteBuffer.
Definição na linha 292 do arquivo LspSocket.java.
293 byte[] bs =
new byte[buf.remaining()];
294 for (
int i = 0; i < bs.length; i++) {
Recebe um pacote da fila de entrada.
Definição na linha 323 do arquivo LspSocket.java.
326 InternalPack nextPack = inputQueue.poll(1, TimeUnit.SECONDS);
327 if (nextPack != null) {
330 }
catch (InterruptedException e) {
abstract boolean isActive()
Indica até quando o serviço será executado.
| void lsp.LspSocket.send |
( |
Pack |
p | ) |
|
Insere um pacote na fila de saída.
Definição na linha 339 do arquivo LspSocket.java.
340 if (p.getPayload().length > LEN_PAYLOAD) {
341 throw new IllegalArgumentException(
"Payload não pode ser maior que " + LEN_PAYLOAD);
344 if (!outputQueue.offer(p)) {
345 throw new IllegalStateException(
"Fila de saída cheia");
| abstract LspConnection lsp.LspSocket.usedConnection |
( |
short |
connId | ) |
|
|
packagepure virtual |
Obtém o objeto LspConnection em uso.
- Parâmetros
-
| connId | Id de conexão para validar/pesquisar |
- Retorna
- Uma instância de LspConnection ou null
| final byte lsp.LspSocket.ACK = 2 |
|
staticprotected |
| final byte lsp.LspSocket.CONNECT = 0 |
|
staticprotected |
| final byte lsp.LspSocket.DATA = 1 |
|
staticprotected |
A documentação para esta classe foi gerada a partir do seguinte arquivo: