亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? rvcbase.c

?? 基于h323協(xié)議的軟phone
?? C
字號:
/***********************************************************************
Filename   : rvcbase.c
Description: cbase initialization and shutdown
************************************************************************
        Copyright (c) 2001 RADVISION Inc. and RADVISION Ltd.
************************************************************************
NOTICE:
This document contains information that is confidential and proprietary
to RADVISION Inc. and RADVISION Ltd.. No part of this document may be
reproduced in any form whatsoever without written prior approval by
RADVISION Inc. or RADVISION Ltd..

RADVISION Inc. and RADVISION Ltd. reserve the right to revise this
publication and make changes without obligation to notify any person of
such revisions or changes.
***********************************************************************/
#include "rvcbase.h"

static const RvChar *RvCBaseVersionString = "0.1";

/* Most modules in cbase require their init and end function to be called. */

/* Module include files for every module that requires init and end be called */
#include "rvqueue.h"
#include "rvtimer.h"
/*#include "rvtimerengine.h"*/
/*#include "rvnethost.h"*/
/*#include "rviolayer.h"*/
/*#include "rvdefaultnetdrv.h"*/

/* Structure containing definitions for module calls */
typedef struct {
    RvStatus (*init)(void);
    RvStatus (*end)(void);
} RvCBaseModuleFuncs;

/* Array of Init and End functions that core will execute. The Init */
/* functions will be called in the order of this array and the End */
/* functions will be called in reverse order. */
static RvCBaseModuleFuncs RvCBaseModules[] = {
    { RvQueueInit, RvQueueEnd },
    { RvTimerInit, RvTimerEnd },
/*    { RvTimerEngineInit, RvTimerEngineEnd },
	{ RvNethostInit, RvNethostEnd },
    { RvIoLayerInit, RvIoLayerEnd },
    { RvDefaultNetDrvInit, RvDefaultNetDrvEnd },*/
    { NULL, NULL } /* List must end with NULLs */
};

/* Lets make error codes a little easier to type */
#define RvCBaseErrorCode(_e) RvErrorCode(RV_ERROR_LIBCODE_CBASE, RV_CBASE_MODULE_CBASE, (_e))

static RvInt RvCBaseInitCount = 0; /* Use to make sure we only run once */
static RvInt RvCBaseNumModules;

/* Must be called before any other calls to any cbase modules. It is not */
/* reentrant so simultaneous calls to it (and RvCBaseEnd) MUST NOT be made. */
/* CCore must be initialzed before this call since CCore services are required. */
RVCOREAPI RvStatus RVCALLCONV RvCBaseInit(void)
{
    RvStatus result;

    if(RvCBaseInitCount != 0) {  /* We're already running */
        RvCBaseInitCount++;
        return RV_OK;
    }

    /* CCore is requred for CBase so initialize it. */
    result = RvCCoreInit();
    if(result != RV_OK)
        return result;

    RvCBaseNumModules = 0;
    for(;;) {
        if(RvCBaseModules[RvCBaseNumModules].init == NULL)
            break;
        result = RvCBaseModules[RvCBaseNumModules].init();
        if(result != RV_OK) {
            /* Something failed, call end for modules that have already had init called. */
            for(RvCBaseNumModules = RvCBaseNumModules - 1; RvCBaseNumModules >= 0; RvCBaseNumModules--)
                RvCBaseModules[RvCBaseNumModules].end();
            return result;
        }
        RvCBaseNumModules++;
    }

    RvCBaseInitCount++;
    return RV_OK;
}

/* Must be called before system exit to clean up. It is not reentrant so */
/* simultaneous calls to it (and RvCBaseInit) MUST NOT be made. */
RVCOREAPI RvStatus RVCALLCONV RvCBaseEnd(void)
{
    RvStatus result, lastresult, coreresult;

#if defined(RV_OTHERCHECK)
    if(RvCBaseInitCount <= 0)
        return RvCBaseErrorCode(RV_ERROR_UNKNOWN);
#endif

    if(RvCBaseInitCount > 1) { /* We're not at the last end yet */
        RvCBaseInitCount--;
        return RV_OK;
    }

    result = RV_OK;

    /* Go backwards for end. Don't stop for errors but save the first one we get. */
    for(RvCBaseNumModules = (RvCBaseNumModules - 1); RvCBaseNumModules >= 0; RvCBaseNumModules--) {
        lastresult = RvCBaseModules[RvCBaseNumModules].end();
        if(result == RV_OK)
            result = lastresult;
    }

    RvCBaseInitCount = 0;

    coreresult = RvCCoreEnd();
    if(result == RV_OK)
        result = coreresult;

    return result;
}

RVCOREAPI const RvChar * RVCALLCONV RvCBaseVersion(void)
{
    return RvCBaseVersionString;
}

#if defined(RV_TEST_CODE)
#include "rvstdio.h"

void RvCBaseTest(void) {
	RvStatus result;

	RvPrintf("Starting test of rvcbase.\n");
	RvPrintf("RvCBaseVersion = %s\n", RvCBaseVersion());

	RvPrintf("RvCBaseInit(): ");
	result = RvCBaseInit();
	if(result == RV_OK) {
		RvPrintf("OK\n");
	} else RvPrintf("ERROR! Code = %d\n",result);

	RvPrintf("RvCBaseEnd(): ");
	result = RvCBaseEnd();
	if(result == RV_OK) {
		RvPrintf("OK\n");
	} else RvPrintf("ERROR! Code = %d\n",result);
}
#endif /* RV_TEST_CODE */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品72免费观看| 亚洲欧美成人一区二区三区| 日本不卡视频一二三区| 欧美一区二区在线视频| 日韩 欧美一区二区三区| 日韩视频在线观看一区二区| 激情伊人五月天久久综合| 久久免费的精品国产v∧| 99久久夜色精品国产网站| 亚洲免费大片在线观看| 欧美日韩国产高清一区二区三区 | 欧美午夜精品一区二区三区| 亚洲成人中文在线| 日韩欧美国产成人一区二区| 国产精品亚洲第一| 玉米视频成人免费看| 91精品国产全国免费观看 | 久久久亚洲精品石原莉奈| 成人av在线观| 亚洲国产一二三| 精品国产乱码久久久久久老虎| 丁香天五香天堂综合| 一区二区在线免费观看| 欧美tk丨vk视频| 成人激情午夜影院| 午夜精品影院在线观看| 国产日韩亚洲欧美综合| 在线看国产一区| 国产一区二区视频在线| 亚洲综合一区二区三区| 久久综合九色综合久久久精品综合| 91丨九色丨蝌蚪富婆spa| 日本最新不卡在线| 亚洲欧美在线另类| 欧美一区二区不卡视频| av在线播放一区二区三区| 男女男精品网站| 亚洲三级理论片| 久久久影视传媒| 6080午夜不卡| 91片在线免费观看| 国产成都精品91一区二区三| 午夜精品久久久久久| 国产精品福利电影一区二区三区四区| 欧美一区二区三区视频| 91免费看片在线观看| 色综合久久综合| 裸体一区二区三区| 亚洲综合网站在线观看| 国产精品色哟哟| 26uuu国产一区二区三区| 在线不卡中文字幕| 色先锋资源久久综合| 国产成人精品一区二区三区四区 | 免费成人小视频| 亚洲综合色噜噜狠狠| 中文一区一区三区高中清不卡| 日韩一区二区在线观看视频播放| 欧美影院精品一区| 91影院在线观看| 福利91精品一区二区三区| 久久99久久99精品免视看婷婷| 亚洲一区二区三区四区不卡| 亚洲人午夜精品天堂一二香蕉| 国产亚洲精久久久久久| 久久综合久久综合久久综合| 欧美一级免费大片| 欧美一区二区三区在线| 777xxx欧美| 在线综合视频播放| 日韩一级精品视频在线观看| 7777精品伊人久久久大香线蕉的 | 久久久久综合网| 欧美成人高清电影在线| 日韩一区二区三区四区| 欧美一区二区三区免费在线看| 欧美精品乱码久久久久久按摩| 欧美午夜影院一区| 欧美日韩中文国产| 欧美日韩极品在线观看一区| 欧洲一区二区av| 精品婷婷伊人一区三区三| 欧美无砖专区一中文字| 欧美日韩精品二区第二页| 欧美电影一区二区| 日韩欧美区一区二| 久久综合九色综合欧美亚洲| 国产亚洲欧美一级| 国产精品国产成人国产三级| 一区二区在线免费| 丝袜美腿亚洲一区二区图片| 久久国产精品一区二区| 韩国三级在线一区| 成人av网站在线观看免费| 99精品视频在线播放观看| 91成人免费网站| 日韩一级在线观看| 国产欧美日韩在线| 亚洲欧美日韩久久精品| 亚洲电影一区二区三区| 久久草av在线| 99久久国产综合精品女不卡| 欧美在线小视频| 精品嫩草影院久久| 中文字幕一区二区日韩精品绯色| 亚洲国产精品一区二区www| 久99久精品视频免费观看| 成人一区二区视频| 欧美日韩另类国产亚洲欧美一级| 日韩视频免费直播| 国产精品成人午夜| 日本午夜精品视频在线观看| 国产91精品露脸国语对白| 欧美性色黄大片| 久久久久久久综合| 亚洲乱码中文字幕综合| 久久精品国产精品亚洲精品| 成人爱爱电影网址| 91精品国产综合久久香蕉麻豆| 久久久99久久| 五月天国产精品| 成人精品免费网站| 日韩三级电影网址| 亚洲蜜桃精久久久久久久| 韩国一区二区三区| 欧美优质美女网站| 久久精品夜夜夜夜久久| 午夜视频一区在线观看| 成人深夜在线观看| 日韩一二三区视频| 亚洲一区二区三区四区不卡| 成人手机电影网| 日韩欧美国产一区二区在线播放 | 免费高清视频精品| 色综合婷婷久久| 久久综合九色综合欧美98| 五月婷婷综合网| 91浏览器在线视频| 国产亚洲一本大道中文在线| 免费观看日韩电影| 欧美日韩国产一区| 亚洲日穴在线视频| 成人精品视频一区| 久久精品欧美一区二区三区不卡 | 亚洲综合成人在线| 不卡一区二区在线| 欧美经典一区二区| 国产专区欧美精品| 91精品国产综合久久久久久漫画| 亚洲综合色区另类av| 99精品视频在线观看| 欧美国产一区在线| 国产一区二区不卡| 精品国产乱码91久久久久久网站| 婷婷夜色潮精品综合在线| 色素色在线综合| 亚洲人成在线播放网站岛国| 成年人国产精品| 国产精品视频线看| 欧美一区二区视频在线观看| 一区二区三区四区五区视频在线观看| 不卡高清视频专区| 中文字幕欧美日韩一区| 丁香婷婷综合五月| 中文字幕精品—区二区四季| 国产丶欧美丶日本不卡视频| 国产色综合一区| 丁香桃色午夜亚洲一区二区三区| 国产婷婷色一区二区三区四区| 国产精品1区2区3区| 国产网站一区二区| 成人午夜在线视频| 中文字幕亚洲电影| 色琪琪一区二区三区亚洲区| 亚洲综合小说图片| 欧美美女bb生活片| 久久激情五月婷婷| 国产亚洲成年网址在线观看| 成人av午夜电影| 亚洲综合男人的天堂| 欧美精品xxxxbbbb| 精品一区二区精品| 中文字幕欧美日韩一区| aaa亚洲精品一二三区| 夜夜嗨av一区二区三区四季av| 欧美色区777第一页| 日本va欧美va精品| 国产欧美一区二区三区鸳鸯浴| a亚洲天堂av| 亚洲国产综合人成综合网站| 日韩一区二区在线免费观看| 国产九九视频一区二区三区| 国产精品免费人成网站| 色综合久久88色综合天天| 天堂av在线一区| 久久久久久久综合| 欧美色图激情小说| 国产裸体歌舞团一区二区| 亚洲三级免费电影| 91精品国产一区二区|