# Ponha a aplicação em manutenção com PAUSESERVER()

> Pause o servidor por nome para que cada pedido receba uma página 503, retome-o e saiba que sem segundo argumento a chamada alterna o estado.

Framework: total5
Product: Total.js 5 (total5@0.0.19)
Language: pt
Content-SHA256: 851697da7410db6348020a788d08d78937350d23b377ef67ed7d413d65af2421
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: total5-installed@total5@0.0.19
Review: not-recorded

`PAUSESERVER(name, true)` pausa o servidor e `PAUSESERVER(name, false)` retoma-o. Enquanto **pelo menos um nome** estiver em pausa, todos os pedidos são respondidos com o estado **503** e a página de manutenção incorporada (um pedido feito com `xhr` recebe uma resposta de erro 503 em vez da página). O nome apenas identifica quem pausou, de modo que duas partes da aplicação possam pausar e retomar de forma independente: o servidor volta a responder quando todos os nomes foram retomados.

Sem o segundo argumento a chamada **alterna**: `PAUSESERVER(name)` pausa quando o nome não estava em pausa e retoma quando estava, e devolve o novo estado (`true` quando está em pausa).

Como um servidor em pausa responde 503 a tudo, incluindo à rota que o retomaria, retome a partir do seu próprio código: um temporizador, um sinal, uma tarefa que termina. O exemplo pausa por pouco tempo e retoma sozinho.

```js controllers/maintenance.js
exports.install = function() {
	ROUTE('GET /maintenance/', maintenance);
	ROUTE('GET /toggle/', toggle);
	ROUTE('GET /ping/', ping);
};

function maintenance($) {
	const state = PAUSESERVER('maintenance', true);
	setTimeout(() => PAUSESERVER('maintenance', false), 600);
	$.json({ paused: state });
}

function toggle($) {
	const first = PAUSESERVER('toggled');
	const second = PAUSESERVER('toggled');
	$.json({ first: first, second: second });
}

function ping($) {
	$.json({ ok: true });
}
```
