# -*- coding: utf-8 -*- import select from Queue import Queue from corrosion.tools.log import get_logger from corrosion.core.task import Task from corrosion.core.calls import SystemCall #from corrosion.tools.debug import Queue _log = get_logger('scheduler') class Scheduler(object): def __init__(self): self._epoll = select.epoll() self._tasks = {} self._ready_queue = Queue() self._waiting_read = {} self._waiting_write = {} self._waiting_end = {} def add(self, coro): task = Task(coro) self._tasks[task.id] = task self._schedule_task(task) return task.id
# -*- coding: utf-8 -*- from corrosion.tools.log import get_logger _log = get_logger('debug') class Queue(object): def __init__(self): self.queue = [] def put(self, item): _log.debug('put: %s', self) self.queue.append(item) def get(self): _log.debug('get: %s', self) return self.queue.pop(0) def empty(self): _log.debug('empty: %s', self) return len(self.queue) == 0 def __repr__(self): return '<%s ~ %s>' % (type(self).__name__, self.queue)