Exemplo n.º 1
0
# -*- 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
Exemplo n.º 2
0
# -*- 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)