48 lines
1.6 KiB
Python
48 lines
1.6 KiB
Python
# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
class _SiteAbstractDrone(object):
|
|
"""
|
|
This is a site subclass of _BaseAbstractDrone in drones.py. Any methods
|
|
here automatically overload _BaseAbstractDrone and are used to create
|
|
_AbstractDrone for consumers.
|
|
"""
|
|
|
|
|
|
def __init__(self, timestamp_remote_calls=True):
|
|
"""
|
|
Add a new private variable _processes_to_kill to _AbstractDrone
|
|
|
|
@param timestamp_remote_calls: If true, drone_utility is invoked with
|
|
the --call_time option and the current time. Currently this is only
|
|
used for testing.
|
|
"""
|
|
super(_SiteAbstractDrone, self).__init__(
|
|
timestamp_remote_calls=timestamp_remote_calls)
|
|
self._processes_to_kill = []
|
|
|
|
|
|
def queue_kill_process(self, process):
|
|
"""Queue a process to kill/abort.
|
|
|
|
@param process: Process to kill/abort.
|
|
"""
|
|
self._processes_to_kill.append(process)
|
|
|
|
|
|
def clear_processes_to_kill(self):
|
|
"""Reset the list of processes to kill for this tick."""
|
|
self._processes_to_kill = []
|
|
|
|
|
|
def execute_queued_calls(self):
|
|
"""Overloads execute_queued_calls().
|
|
|
|
If there are any processes queued to kill, kill them then process the
|
|
remaining queued up calls.
|
|
"""
|
|
if self._processes_to_kill:
|
|
self.queue_call('kill_processes', self._processes_to_kill)
|
|
self.clear_processes_to_kill()
|
|
return super(_SiteAbstractDrone, self).execute_queued_calls()
|