⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smcp-timer.c

📁 smcp报文处理,阅读您的文件包然后写出其具体功能
💻 C
字号:
#include "smcp-timer.h"#include "smcp-message-factory.h"static timer_t smcp_timers[CURNET_TIMER_NUM];int smcp_create_timers(){    int i;    for (i = 0; i < CURNET_TIMER_NUM; i++)    {        if ((smcp_timers[i] = create_timer(i)) < 0)            return -1;    }    return 0;}int smcp_start__timer(int sec,int wich){    return start_timer(smcp_timers[wich], sec);}int smcp_stop_timer(int wich){    return stop_timer(smcp_timers[wich]);}int smcp_destroy_timer(int wich){    return timer_delete(smcp_timers[wich]);}/*********************************************************** * ***********************************************************/timer_t create_timer(int timer_type){    timer_t time_id;    struct sigevent se;    memset(&se, 0, sizeof(se));    se.sigev_notify = SIGEV_THREAD;    se.sigev_notify_function = timers_handle;    se.sigev_value.sival_int = timer_type;    if (timer_create(CLOCK_REALTIME, &se, &time_id) < 0)    {        return -1;    }    return time_id;}int start_timer(timer_t timer_id, int sec){    struct itimerspec ts, ots;    struct timespec cts;    clock_gettime(CLOCK_REALTIME, &cts);    ts.it_value.tv_sec = cts.tv_sec + sec;    ts.it_value.tv_nsec = cts.tv_nsec;    ts.it_interval.tv_sec = sec;    ts.it_interval.tv_nsec = 0;    if (timer_settime(timer_id, TIMER_ABSTIME, &ts, &ots) < 0)    {        return -1;    }    return 0;}int stop_timer(timer_t timer_id){    struct itimerspec ts, ots;    ts.it_value.tv_sec = 0;    ts.it_value.tv_nsec = 0;    ts.it_interval.tv_sec = 0;    ts.it_interval.tv_nsec = 0;    if (timer_settime(timer_id, TIMER_ABSTIME, &ts, &ots) < 0)    {        return -1;    }    return 0;}static int alive_check_rru0_timeout_num;static int alive_check_rru1_timeout_num;static int alive_check_rru2_timeout_num;static int alive_check_rru3_timeout_num;void timers_handle(sigval_t v){    switch (v.sival_int)    {    case SEND_BOOT_NOTIFY_TIMER:        boot_notify();        break;    case ALIVE_CHECK_RRU0_RETRAINS_TIMER:        alive_check_rru0_timeout_num = 0;        alive_check(&rru[0]);        smcp_start__timer(1, ALIVE_CHECK_RRU0_TIMER);        break;    case ALIVE_CHECK_RRU1_RETRAINS_TIMER:        alive_check_rru1_timeout_num = 0;        alive_check(&rru[1]);        smcp_start__timer(1, ALIVE_CHECK_RRU1_TIMER);        break;    case ALIVE_CHECK_RRU2_RETRAINS_TIMER:        alive_check_rru2_timeout_num = 0;        alive_check(&rru[2]);        smcp_start__timer(1, ALIVE_CHECK_RRU2_TIMER);        break;    case ALIVE_CHECK_RRU3_RETRAINS_TIMER:        alive_check_rru3_timeout_num = 0;        alive_check(&rru[3]);        smcp_start__timer(1, ALIVE_CHECK_RRU3_TIMER);        break;    case ALIVE_CHECK_RRU0_TIMER:        alive_check_rru0_timeout_num++;        if (alive_check_rru0_timeout_num < 3)        {            alive_check(&rru[0]);        } else        {            printf("RRU0 is not alive\n");            smcp_stop_timer(ALIVE_CHECK_RRU0_TIMER);            smcp_stop_timer(ALIVE_CHECK_RRU0_RETRAINS_TIMER);        }        break;    case ALIVE_CHECK_RRU1_TIMER:        alive_check_rru1_timeout_num++;        if (alive_check_rru1_timeout_num < 3)        {            alive_check(&rru[1]);        } else        {            printf("RRU1 is not alive\n");            smcp_stop_timer(ALIVE_CHECK_RRU1_TIMER);            smcp_stop_timer(ALIVE_CHECK_RRU1_RETRAINS_TIMER);        }        break;    case ALIVE_CHECK_RRU2_TIMER:        alive_check_rru2_timeout_num++;        if (alive_check_rru2_timeout_num < 3)        {            alive_check(&rru[2]);        } else        {            printf("RRU2 is not alive\n");            smcp_stop_timer(ALIVE_CHECK_RRU2_TIMER);            smcp_stop_timer(ALIVE_CHECK_RRU2_RETRAINS_TIMER);        }        break;    case ALIVE_CHECK_RRU3_TIMER:        alive_check_rru3_timeout_num++;        if (alive_check_rru3_timeout_num < 3)        {            alive_check(&rru[3]);        } else        {            printf("RRU3 is not alive\n");            smcp_stop_timer(ALIVE_CHECK_RRU3_TIMER);            smcp_stop_timer(ALIVE_CHECK_RRU3_RETRAINS_TIMER);        }        break;    }    return;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -