Esempio n. 1
0
static void *in_notify(oop_source_t *oop, int fd, oop_event_t event, void *args)
{
    char msg;
    struct info_queue_t *iq = (struct info_queue_t *)args;

    pthread_mutex_lock(&iq->mutex);

    while (read(fd, &msg, sizeof (char)) != -1)
    {
        if (msg == CMD_EXIT)
        {
            oop_remove_fd(oop, fd, OOP_READ);
            break;
        }
        else if (msg == CMD_DD)
        {
            struct dyndict_t *dd = (struct dyndict_t *)tq_get(&iq->tq);
            if (dd->stat == DD_ADD)
                add_dd(oop, dd);
            else if (dd->stat == DD_DEL)
                del_dd(oop, dd);
        }
    }

    pthread_mutex_unlock(&iq->mutex);

    return OOP_CONTINUE;
}
Esempio n. 2
0
void LogMonitor::AddDDInfo(std::string dd_name, std::string is_org, std::string is_p2p, std::string d_name,
               int piece_index, int subpiece_index, bool is_require, bool is_subpiece, bool is_http_subpiece)
{
    if (dd_list.find(dd_name) == dd_list.end())
    {
        boost::shared_ptr<DownloaderDriver> add_dd(new DownloaderDriver());
        add_dd->d_list.clear();
        dd_list.insert(std::make_pair(dd_name, add_dd));
        AddDInfo(add_dd, is_org, is_p2p, d_name, piece_index, subpiece_index, is_require, is_subpiece, is_http_subpiece);
    }
    else
    {
        AddDInfo(dd_list[dd_name], is_org, is_p2p, d_name, piece_index, subpiece_index, is_require, is_subpiece, is_http_subpiece);
    }
}