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