Live Sequence Protocol for Java
Implementation of LSP in Java language
 Todos Classes Namespaces Arquivos Funções Variáveis
Componentes | Métodos Públicos | Lista de todos os Membros
Referência da Classe lsp.LspServer

Servidor LSP. Mais...

Métodos Públicos

 LspServer (int port, LspParams params) throws IOException
 
Pack read ()
 Lê dados da fila de entrada do servidor. Mais...
 
void write (Pack pack)
 Envia dados para um determinado cliente. Mais...
 
void closeConn (short connId)
 Encerra uma conexão com o identificador connId. Mais...
 
void closeAll ()
 Encerra todas as conexões ativas e a atividade do servidor. Mais...
 
int getPort ()
 

Descrição Detalhada

Servidor LSP.

Autor
Wagner Macedo

Definição na linha 15 do arquivo LspServer.java.

Construtores & Destrutores

lsp.LspServer.LspServer ( int  port,
LspParams  params 
) throws IOException

Definição na linha 39 do arquivo LspServer.java.

39  {
40  this.lspSocket = new LspSocketImpl(port);
41  this.port = this.lspSocket.getPort();
42  this.params = params == null ? LspParams.defaultParams() : params;
43  }

Métodos

void lsp.LspServer.closeAll ( )

Encerra todas as conexões ativas e a atividade do servidor.

Isso inclui o encerramento do processador de entradas.

Definição na linha 123 do arquivo LspServer.java.

123  {
124  // Marca servidor como fechado para novas entradas
125  this.markClosed = true;
126 
127  // Marca todas as conexões como fechadas (em paralelo)
128  for (final LspConnection conn : connectionPool.values()) {
129  new Thread() {
130  public void run() {
131  conn.close(false);
132  };
133  }.start();
134  }
135 
136  // Aguarda o pool de conexão se esvaziar
137  while (!connectionPool.isEmpty()) {
138  try {
139  Thread.sleep(params.getEpoch());
140  } catch (InterruptedException e) {
141  break;
142  }
143  }
144 
145  // Marca servidor como inativo e fecha socket lsp
146  this.active = false;
147  this.lspSocket.close();
148 
149  // Limpeza de memória
150  this.connectionPool.clear();
151  this.connectedSockets.clear();
152  }
void lsp.LspServer.closeConn ( short  connId)

Encerra uma conexão com o identificador connId.

Não é possível chamar read, write ou closeConn para a mesma connId depois de chamar esse método.

Exceções
ClosedConnectionExceptionse a conexão estiver encerrada.

Definição na linha 87 do arquivo LspServer.java.

87  {
88  checkActive();
89 
90  final LspConnection conn = connectionPool.get(connId);
91  if (conn == null) {
92  throw new ClosedConnectionException(connId);
93  }
94 
95  // Marca a conexão como fechada e se não há mensagens para serem
96  // enviadas, encerra a conexão formalmente e remove da lista de conexões
97  // e do conjunto de sockets.
98  conn.close(false);
99  if (conn.getSendMissing() == 0) {
100  realCloseConn(connId, conn);
101  return;
102  }
103 
104  while (!conn.isInterrupted()) {
105  try {
106  Thread.sleep(params.getEpoch());
107  } catch (InterruptedException e) {
108  return;
109  }
110  }
111  }

Este é o diagrama das funções utilizadas por esta função:

int lsp.LspServer.getPort ( )

Definição na linha 159 do arquivo LspServer.java.

159  {
160  return this.port;
161  }
Pack lsp.LspServer.read ( )

Lê dados da fila de entrada do servidor.

Se não houver dados recebidos, bloqueia o chamador até que dados sejam recebidos. Os dados estão encapsulados pela classe Pack.

Exceções
ClosedConnectionExceptionse o servidor não estiver ativo
IllegalStateExceptionse a fila de saída estiver cheia

Definição na linha 55 do arquivo LspServer.java.

55  {
56  checkActive();
57  return lspSocket.receive();
58  }
void lsp.LspServer.write ( Pack  pack)

Envia dados para um determinado cliente.

Exceções
ClosedConnectionExceptionse a conexão estiver encerrada

Definição na linha 66 do arquivo LspServer.java.

66  {
67  checkActive();
68 
69  final LspConnection conn = connectionPool.get(pack.getConnId());
70  if (conn == null || conn.isClosed()) {
71  throw new ClosedConnectionException(pack.getConnId());
72  }
73 
74  lspSocket.send(pack);
75  conn.incSendMissing();
76  }

Este é o diagrama das funções utilizadas por esta função:


A documentação para esta classe foi gerada a partir do seguinte arquivo: