Пример #1
0
/**
 * Restart a monitor
 * @param dcb Client DCB
 * @param tree Parse tree
 */
void exec_restart_monitor(DCB *dcb, MAXINFO_TREE *tree)
{
    char errmsg[120];
    if (tree && tree->value)
    {
        MONITOR* monitor = monitor_find(tree->value);
        if (monitor)
        {
            monitorStart(monitor, NULL);
            maxinfo_send_ok(dcb);
        }
        else
        {
            if (strlen(tree->value) > 80) // Prevent buffer overrun
            {
                tree->value[80] = 0;
            }
            sprintf(errmsg, "Invalid argument '%s'", tree->value);
            maxinfo_send_error(dcb, 0, errmsg);
        }
    }
    else
    {
        sprintf(errmsg, "Missing argument for 'RESTART MONITOR'");
        maxinfo_send_error(dcb, 0, errmsg);
    }
}
Пример #2
0
static int stream_monitor_attach(STREAM_STATS_MONITOR_T *pMonitor, STREAM_STATS_T *pStats) {
    int rc = 0;
    STREAM_STATS_T *pNode = NULL;

    if(!pMonitor || !pMonitor->active || !pStats) {
        return -1;
    }

    pthread_mutex_lock(&pMonitor->mtx);

    if(monitor_find(pMonitor, pStats)) {
        pthread_mutex_unlock(&pMonitor->mtx);
        return -1;
    }

    if(!pMonitor->plist) {
        pMonitor->plist = pStats;
    } else {
        pNode = pMonitor->plist;
        pMonitor->plist = pStats;
    }
    pStats->pnext = pNode;
    gettimeofday(&pStats->tvstart, NULL);
    pStats->pMonitor = pMonitor;
    pMonitor->count++;
    //fprintf(stderr, "ATTACH COUNT:%d\n", pMonitor->count);

    pthread_mutex_unlock(&pMonitor->mtx);

    return rc;
}