| # Copyright 2017 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import collections |
| |
| |
| # Message types. |
| ACK = 'ack' |
| ECHO = 'echo' |
| GET = 'get' |
| SHUTDOWN = 'shutdown' |
| STATUS = 'status' |
| |
| # Message type for container pool communication. |
| Message = collections.namedtuple('Message', ['type', 'args']) |
| |
| |
| def ack(): |
| """Creates a message of type ACK. |
| |
| ACK messages are returned by the server to acknowledge receipt and confirm |
| that requested operations have taken place. |
| """ |
| return Message(ACK, {}) |
| |
| |
| def echo(msg): |
| """Creates an echo message. |
| |
| ECHO messages are mainly for testing. They verify that the service is up |
| and running. |
| |
| @param msg: An optional string that can be attached to the message. |
| """ |
| return Message(ECHO, {'msg': msg}) |
| |
| |
| def shutdown(): |
| """Creates a service shutdown message. |
| |
| SHUTDOWN messages cause the service to shut down. See Service.stop(). |
| """ |
| return Message(SHUTDOWN, {}) |
| |
| |
| def status(): |
| """Creates a status request message. |
| |
| STATUS messages cause the service to return a dictionary describing the |
| current state of the container pool. |
| """ |
| return Message(STATUS, {}) |
| |
| |
| def get(id, timeout=0): |
| """Creates a get container message. |
| |
| GET messages retrieve a running container from the container pool. |
| |
| @param id: A ContainerId to be assigned to the container. |
| @param timeout: An optional timeout to wait for the container. |
| """ |
| return Message(GET, {'id': id, 'timeout': timeout}) |