#include "scheduler.hpp"

scheduler s;

void scheduler::spawn(Fiber* fiber) {
    fibers_.push_back(fiber);
}

void scheduler::do_it() {

    while (!fibers_.empty()) {
        Fiber* fiber = fibers_.front();  
        fibers_.pop_front();  
        current_context_ = fiber->get_context();  
        
        
        swap_context(&context_, current_context_);
    }
}

void scheduler::fiber_exit(Context* current_context) {
    set_context(&context_);
}

Context* scheduler::get_current_context() {
    return current_context_;
}