| Version 27 (modified by jano.simas, 10 years ago) (diff) |
|---|
Comunicação TCP
A comunicação da aplicação web e as instâncias dos serviços deve ser feita através do protocolo TCP.
As mensagens devem ser compostas por 3 partes:
- Tamanho da mensagem + tamanho do sinal (inteiro de 4 bytes)
- Sinal (inteiro de 4 bytes)
- Mensagem [opcional]
Sinais disponíveis
| 0 | TERMINATE_SERVICE_SIGNAL | Desliga o serviço |
| 1 | STATUS_SIGNAL | Requisição de informações sobre o serviço |
| 2 | ADD_DATA_SIGNAL | Envio de dados |
| 3 | START_PROCESS_SIGNAL | Inicializa um processo (Coleta, análise,...) |
| 4 | LOG_SIGNAL | Sinal utilizado para que o serviço envie mensagens de erro para a aplicação Web |
| 5 | REMOVE_DATA_SIGNAL | Sinal utilizado remoção de dados |
| 6 | PROCESS_FINISHED_SIGNAL | Sinal utilizado notificar que um processo foi finalizado |
| 7 | UPDATE_SERVICE_SIGNAL | Sinal utilizado para atualizar as informações de um serviço, é obrigatório o envio desse sinal quando um serviço é iniciado. |
UPDATE_SERVICE_SIGNAL
A mensagem deve ser um objeto JSon com as tags:
- instance_id : INT
- instance_name : STRING
- listening_port : INT
- number_of_threads : INT
- log_database : JSONOBJECT
- PG_HOST : STRING
- PG_PORT : STRING
- PG_USER : STRING
- PG_PASSWORD : STRING
- PG_DB_NAME : STRING
ADD_DATA_SIGNAL
Mensagem
O envio de dados deve ser feito através de um objeto JSon composto por arrays de cada tipo de dado.
O JSon deve ser formatado de forma compacta, isso é, não deve ter quebras de linhas, todo ":" separador deve ser seguido por um único espaço.
As tags de tipos de dados aceitos :
- DataProviders
- DataSeries
- Collectors
- Analysis
Exemplo de mensagem
\x00\x00\x01\x09\x00\x00\x00\x02{"DataProviders": [{"active": true,"class": "DataProvider","data_provider_type": "FILE","description": "Testing provider","id": 1,"intent": 0,"name": "Provider","project_id": 1,"uri": "file:///home/user/MyDevel/terrama2-build/data/PCD_serrmar_INPE"}]}
REMOVE_DATA_SIGNAL
O envio de dados deve ser feito através de um objeto JSon composto por arrays de ID's de cada tipo de dado.
O JSon deve ser formatado de forma compacta, isso é, não deve ter quebras de linhas, todo ":" separador deve ser seguido por um único espaço.
As tags de tipos de dados aceitos :
- DataProviders
- DataSeries
- Collectors
- Analysis
STATUS_SIGNAL
Quando um serviço receber um STATUS_SIGNAL, ele enviará uma resposta com o mesmo modelo de mensagem com o sinal STATUS_SIGNAL e um json com a mensagem.
As tags da mensagem de resposta são:
- instance_id : INT
- instance_name : STRING
- start_time : STRING
- terrama2_version : STRING
- terrama2_version : STRING
- shutting_down : BOOL
LOG_SIGNAL
Um LOG_SIGNAL deve ser eviado com um json no formato:
{
"process_id": INT,
"begin": INT,
"end": INT
}
Sendo process_id o id do processo que se quer o log, begin e end o índice do primeiro e último log.
Como respota o serviço enviará um json no formato
[
{
"process_id": INT,
"status": INT,
"start_timestamp": STRING:DATE TIME WITH TIME ZONE,
"data_timestamp": STRING:DATE TIME WITH TIME ZONE,
"last_process_timestamp": STRING:DATE TIME WITH TIME ZONE,
"data": STRING,
"messages": [
{
"type": INT,
"description": STRING,
"timestamp": STRING:DATE TIME WITH TIME ZONE,
},
...
]
},
...
]
