# 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})