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

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

?? htevtlst.c

?? www工具包. 這是W3C官方支持的www支撐庫(kù). 其中提供通用目的的客戶端的WebAPI: complete HTTP/1.1 (with caching, pipelining, PUT, POS
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
	    }	    #ifdef WWW_WIN_ASYNC	    if (WSAAsyncSelect(s, HTSocketWin, HTwinMsg, remaining) < 0)		ret = HT_ERROR;#else /* WWW_WIN_ASYNC */	    FD_CLR(s, FdArray+HTEvent_INDEX(type));	    HTTRACEDATA((char*)FdArray+HTEvent_INDEX(type), 8, "HTEventList_unregister: (s:%d)" _ s);#endif /* !WWW_WIN_ASYNC */	    /*	    **  Check to see if we can delete the action completely. We do this	    **  if there are no more events registered.	    */	    if (remaining == 0) {		HTList * doomed = cur;		HTTRACE(THD_TRACE, "Event....... No more events registered for socket %d\n" _ s);#ifndef WWW_WIN_ASYNC		/* Check to see if we have to update MaxSock */		if (pres->s >= MaxSock) __ResetMaxSock();#endif /* !WWW_WIN_ASYNC */		HT_FREE(pres);		pres = (SockEvents *) HTList_nextObject(cur);		HTList_quickRemoveElement(doomed, last);	    }	    ret = HT_OK;      	    HTTRACE(THD_TRACE, "Event....... Socket %d unregistered for %s\n" _ s _ 				   HTEvent_type2str(type));	    /* We found the socket and can break */	    break;	}	last = cur;    }    if (THD_TRACE) {	if (ret == HT_ERROR)	    HTTRACE(THD_TRACE, "Event....... Couldn't find socket %d. Can't unregister type %s\n" _		    s _ HTEvent_type2str(type));    }    return ret;}/*** Unregister all sockets ** N.B. we just remove them for our internal data structures: it is up to the ** application to actually close the socket. */PUBLIC int HTEventList_unregisterAll (void) {    int i;    HTTRACE(THD_TRACE, "Unregister.. all sockets\n");    for (i = 0 ; i < HT_M_HASH_SIZE; i++) {	HTList * cur = HashTable[i];	SockEvents * pres;	while ((pres = (SockEvents *) HTList_nextObject(cur))) {#ifdef WWW_WIN_ASYNC	    WSAAsyncSelect(pres->s, HTSocketWin, HTwinMsg, 0);#endif /* WWW_WIN_ASYNC */	    HT_FREE(pres);	}	HTList_delete(HashTable[i]);	HashTable[i] = NULL;    }#ifndef WWW_WIN_ASYNC    MaxSock = 0 ;    HTTRACE(THD_TRACE, "Event....... New value for MaxSock is %d\n" _ MaxSock);    FD_ZERO(FdArray+HTEvent_INDEX(HTEvent_READ));    FD_ZERO(FdArray+HTEvent_INDEX(HTEvent_WRITE));    FD_ZERO(FdArray+HTEvent_INDEX(HTEvent_OOB));#endif /* !WWW_WIN_ASYNC */    EventOrder_deleteAll();    return 0;}/***  Dispatch the event to the appropriate event handler.**  If no event handler is found then just return.*/PUBLIC int HTEventList_dispatch (SOCKET s, HTEventType type, ms_t now){    SockEvents * sockp = SockEvents_get(s, SockEvents_find);    if (sockp) {	HTEvent * event = sockp->events[HTEvent_INDEX(type)];	/* Fixup the timeout */	if (sockp->timeouts[HTEvent_INDEX(type)])	    HTTimer_refresh(sockp->timeouts[HTEvent_INDEX(type)], now);	/*	**  If we have found an event object for this event then see	**  is we should call it.	*/	if (event && event->priority!=HT_PRIORITY_OFF)	    return (*event->cbf) (s, event->param, type);	HTTRACE(THD_TRACE, "Dispatch.... Handler %p NOT called\n" _ sockp);	return HT_OK;    }    HTTRACE(THD_TRACE, "Dispatch.... Bad socket %d\n" _ s);    return NO;}PUBLIC HTEvent * HTEventList_lookup (SOCKET s, HTEventType type){    SockEvents * sockp = NULL;    if ((sockp = SockEvents_get(s, SockEvents_find)) == NULL)	return NULL;    return sockp->events[HTEvent_INDEX(type)];}/* ------------------------------------------------------------------------- *//*		     		THE EVENT LOOP 		 		     *//* ------------------------------------------------------------------------- *//***  Start eventloop*/PUBLIC int HTEventList_newLoop (void){    return HTEventList_loop (NULL);}/***  Stops the event loop. The function does not guarantee**  that all requests have terminated. This is for the app to do*/PUBLIC void HTEventList_stopLoop (void){    HTEndLoop = 1;}/***  There are now two versions of the event loop. The first is if you want**  to use async I/O on windows, and the other is if you want to use normal**  Unix setup with sockets*/PUBLIC int HTEventList_loop (HTRequest * theRequest){#ifdef WWW_WIN_ASYNC    MSG msg;    int status;    while (!HTEndLoop && GetMessage(&msg,0,0,0)) {	    TranslateMessage(&msg);	    DispatchMessage(&msg);    }    status = HTEndLoop;        /* Reset HTEndLoop in case we want to start again */    HTEndLoop = 0;        return (status == 1 ? HT_OK : HT_ERROR);#else /* WWW_WIN_ASYNC */    fd_set treadset, twriteset, texceptset;    struct timeval waittime, * wt;    int active_sockets;    int maxfds;    ms_t timeout;    ms_t now;    SOCKET s;    int status = HT_OK;    /* Check that we don't have multiple loops started at once */    if (HTInLoop) {	HTTRACE(THD_TRACE, "Event Loop.. Already one loop running - exiting\n");	return HT_ERROR;    }    HTInLoop = YES;    /* Set up list of events - is kept around until EventOrder_deleteAll */    if (!EventOrderList)	EventOrderList = HTList_new();    else	EventOrder_clearAll();    /* Don't leave this loop until we leave the application */    while (!HTEndLoop) {        /*	**  Timeval struct copy needed for linux, as it set the value to the	**  remaining timeout while exiting the select. (and perhaps for	**  other OS). Code borrowed from X server.	*/	wt = NULL;	if ((status = HTTimer_next(&timeout)))	    break;	if (timeout != 0) {	    waittime.tv_sec = timeout / MILLI_PER_SECOND;	    waittime.tv_usec = (timeout % MILLI_PER_SECOND) *		(1000000 / MILLI_PER_SECOND);	    wt = &waittime;	}	/*	** Check whether we still have to continue the event loop. It could	** be that one of the timer handlers ended the loop.	*/	if (HTEndLoop) break;	/*	**  Now we copy the current active file descriptors to pass them to select.	*/        treadset = FdArray[HTEvent_INDEX(HTEvent_READ)];        twriteset = FdArray[HTEvent_INDEX(HTEvent_WRITE)];        texceptset = FdArray[HTEvent_INDEX(HTEvent_OOB)];	/* And also get the max socket value */        maxfds = MaxSock; 	HTTRACE(THD_TRACE, "Event Loop.. calling select: maxfds is %d\n" _ maxfds);#ifdef HTDEBUG	fd_dump(maxfds, &treadset, &twriteset, &texceptset, wt);#endif#ifdef __hpux         active_sockets = select(maxfds+1, (int *)&treadset, (int *)&twriteset,				(int *)&texceptset, wt);#elif defined(_WINSOCKAPI_)	/*	 * yovavm@contact.com	 *	 * On some WINSOCK versions select() with 3 empty sets and NULL timeout	 * returns 0 and in some it returns -1.	 * If 0 is returned in such situation, we will go into an infinite loop	 * (cause the sets will stay empty forever ...),	 * so make sure to set the active_sockets = -1 which will take us out 	 * of the loop.	 */	if ((treadset.fd_count || twriteset.fd_count || texceptset.fd_count) 	    && wt)	     active_sockets = select(maxfds+1, &treadset, &twriteset,				     &texceptset, wt);	else	     active_sockets = -1;	#else        active_sockets = select(maxfds+1, &treadset, &twriteset, &texceptset, wt);#endif	now = HTGetTimeInMillis();	HTTRACE(THD_TRACE, "Event Loop.. select returns %d\n" _ active_sockets);#ifdef HTDEBUG	fd_dump(maxfds, &treadset, &twriteset, &texceptset, wt);#endif        if (active_sockets == -1) {#ifdef EINTR	    if (socerrno == EINTR) {		/*		** EINTR     The select() function was interrupted  before  any		**           of  the  selected  events  occurred and before the		**           timeout interval expired.		**		**           If SA_RESTART has been set  for  the  interrupting		**           signal,  it  is  implementation-dependent  whether		**	     select() restarts or returns with EINTR.		*/		HTTRACE(THD_TRACE, "Event Loop.. select was interruted - try again\n");		continue;	    }#endif /* EINTR */#ifdef EBADF	    if (socerrno == EBADF) {	        /*		** EBADF     One or more of the file descriptor sets  specified		**           a  file  descriptor  that is not a valid open file		**           descriptor.		*/		HTTRACE(THD_TRACE, "Event Loop.. One or more sockets were not through their connect phase - try again\n");		continue;	    }#endif	    HTTRACE(THD_TRACE, "Event Loop.. select returned error %d\n" _ socerrno);#ifdef HTDEBUG	    EventList_dump();#endif /* HTDEBUG */	    status = HT_ERROR;	    break;        }	/*	**  We had a timeout so now we check and see if we have a timeout	**  handler to call. Let HTTimer_next get it.	*/ 	if (active_sockets == 0)	    continue;	/* There were active sockets. Determine which fd sets they were in */	for (s = 0 ; s <= maxfds ; s++) { 	    if (FD_ISSET(s, &texceptset))		if ((status = EventOrder_add(s, HTEvent_OOB, now)) != HT_OK)		    goto stop_loop;	    if (FD_ISSET(s, &twriteset))		if ((status = EventOrder_add(s, HTEvent_WRITE, now)) != HT_OK)		    goto stop_loop;	    if (FD_ISSET(s, &treadset))		if ((status = EventOrder_add(s, HTEvent_READ, now)) != HT_OK)		    goto stop_loop;	}	if ((status = EventOrder_executeAndDelete()) != HT_OK) break;    };    /* Reset HTEndLoop in case we want to start again */ stop_loop:    HTEndLoop = 0;    HTInLoop = NO;    return status;#endif /* !WWW_WIN_ASYNC */}/* ------------------------------------------------------------------------- *//*		     EVENT INITIALIZATION AND TERMINATION		     *//* ------------------------------------------------------------------------- */#ifdef WWW_WIN_ASYNC/* Only responsible for WM_TIMER and WSA_AsyncSelect */    	PRIVATE LRESULT CALLBACK AsyncWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam){    WORD event;    SOCKET sock;    HTEventType type;    ms_t now = HTGetTimeInMillis();    /* timeout stuff */    if (uMsg == WM_TIMER) {	HTTimer_dispatch((HTTimer *)wParam);	return (0);    }    if (uMsg != HTwinMsg)	/* not our async message */    	return (DefWindowProc(hwnd, uMsg, wParam, lParam));    event = LOWORD(lParam);    sock = (SOCKET)wParam;    switch (event) {    case FD_READ: type = HTEvent_READ; break;    case FD_WRITE: type = HTEvent_WRITE; break;    case FD_ACCEPT: type = HTEvent_ACCEPT; break;    case FD_CONNECT: type = HTEvent_CONNECT; break;    case FD_OOB: type = HTEvent_OOB; break;    /* JK: was returning HTEvent_CLOSE before, and this was a source of       errors, as libwww detects the socket shutdown with a call to recv  */      case FD_CLOSE: type = HTEvent_READ; break;    default: HTDEBUGBREAK("Unknown event %d\n" _ event);    }    if (HTEventList_dispatch((int)sock, type, now) != HT_OK)	HTEndLoop = -1;    return (0);}/*	HTEventList_get/setWinHandle**	--------------------------**	Managing the windows handle on Windows*/PUBLIC BOOL HTEventList_setWinHandle (HWND window, unsigned long message){    HTSocketWin = window;    HTwinMsg = message;    return YES;}PUBLIC HWND HTEventList_getWinHandle (unsigned long * pMessage){    if (pMessage)        *pMessage = HTwinMsg;    return (HTSocketWin);}#endif /* WWW_WIN_ASYNC */PUBLIC BOOL HTEventInit (void){#ifdef WWW_WIN_ASYNC    /*    **	We are here starting a hidden window to take care of events from    **  the async select() call in the async version of the event loop in    **	the Internal event manager (HTEvtLst.c)    */    static char className[] = "AsyncWindowClass";    WNDCLASS wc;    OSVERSIONINFO osInfo;        wc.style=0;    wc.lpfnWndProc=(WNDPROC)AsyncWindowProc;    wc.cbClsExtra=0;    wc.cbWndExtra=0;    wc.hIcon=0;    wc.hCursor=0;    wc.hbrBackground=0;    wc.lpszMenuName=(LPSTR)0;    wc.lpszClassName=className;    osInfo.dwOSVersionInfoSize = sizeof(osInfo);    GetVersionEx(&osInfo);    /* According to Gary Johnson, GetModuleHandle() works for NT as well */#if 0    if (osInfo.dwPlatformId == VER_PLATFORM_WIN32s || osInfo.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS)	wc.hInstance=GetModuleHandle(NULL); /* 95 and non threaded platforms */    else        wc.hInstance=GetCurrentProcess(); /* NT and hopefully everything following */#else    wc.hInstance=GetModuleHandle(NULL); /* Should work on all win32 stuff */#endif    HTinstance = wc.hInstance;    HTclass = RegisterClass(&wc);    if (!HTclass) {	HTTRACE(THD_TRACE, "HTLibInit.. Can't RegisterClass \"%s\"\n" _ className);	return NO;    }    if (!(HTSocketWin = CreateWindow(className, "WWW_WIN_ASYNC", WS_POPUP, CW_USEDEFAULT, CW_USEDEFAULT,                                      CW_USEDEFAULT, CW_USEDEFAULT, 0, 0, wc.hInstance,0))) {#ifdef HTDEBUG	char space[50];       	HTTRACE(THD_TRACE, "HTLibInit.. Can't Create Window \"WWW_WIN_ASYNC\" - error:");	sprintf(space, "%ld\n", GetLastError());	HTTRACE(THD_TRACE, space);#endif /* HTDEBUG */    	return NO;    }    HTwinMsg = WM_USER;  /* use first available message since app uses none */    /*  Register platform specific timer handlers for windows */    HTTimer_registerSetTimerCallback(Timer_setWindowsTimer);    HTTimer_registerDeleteTimerCallback(Timer_deleteWindowsTimer);#endif /* WWW_WIN_ASYNC */#ifdef _WINSOCKAPI_    /*    ** Initialise WinSock DLL. This must also be shut down! PMH    */    {        WSADATA            wsadata;	if (WSAStartup(DESIRED_WINSOCK_VERSION, &wsadata)) {	    HTTRACE(THD_TRACE, "HTEventInit. Can't initialize WinSoc\n");            WSACleanup();            return NO;        }        if (wsadata.wVersion < MINIMUM_WINSOCK_VERSION) {            HTTRACE(THD_TRACE, "HTEventInit. Bad version of WinSoc\n");            WSACleanup();            return NO;        }	HTTRACE(APP_TRACE, "HTEventInit. Using WinSoc version \"%s\".\n" _ 		    wsadata.szDescription);    }#endif /* _WINSOCKAPI_ */    HTEvent_setRegisterCallback(HTEventList_register);    HTEvent_setUnregisterCallback(HTEventList_unregister);    return YES;}PUBLIC BOOL HTEventTerminate (void){#ifdef _WINSOCKAPI_    WSACleanup();#endif /* _WINSOCKAPI_ */#ifdef WWW_WIN_ASYNC    DestroyWindow(HTSocketWin);    UnregisterClass((LPCTSTR)HTclass, HTinstance);#endif /* WWW_WIN_ASYNC */    return YES;}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品成人免费精品自在线观看 | 韩国精品一区二区| 美国三级日本三级久久99| 国产一区二区按摩在线观看| 99热在这里有精品免费| 欧美在线免费观看亚洲| 日韩午夜精品电影| 国产精品欧美一区二区三区| 亚洲电影你懂得| 国产福利一区二区三区| 一本大道久久a久久综合婷婷| 欧美剧情片在线观看| 久久久亚洲精品一区二区三区 | 91小视频免费观看| 欧美一区二区三区日韩| 国产精品精品国产色婷婷| 午夜av电影一区| 成人美女在线视频| 欧美美女激情18p| 国产精品国产自产拍高清av | 日韩一级高清毛片| 中文一区在线播放| 视频一区二区中文字幕| 成人美女视频在线看| 在线播放中文一区| 国产精品成人一区二区艾草 | 精品捆绑美女sm三区| 一区二区三区在线不卡| 国内精品自线一区二区三区视频| 色综合久久中文字幕| 久久众筹精品私拍模特| 婷婷开心久久网| 99视频热这里只有精品免费| 精品国产一区二区亚洲人成毛片 | 欧美高清你懂得| 中文字幕在线观看一区| 久久不见久久见中文字幕免费| 在线视频一区二区三| 国产日韩av一区| 久久国产精品72免费观看| 欧美手机在线视频| 亚洲欧美激情视频在线观看一区二区三区 | 高清久久久久久| 91精品福利在线一区二区三区| 亚洲免费在线看| 成人午夜视频免费看| 精品第一国产综合精品aⅴ| 亚洲国产欧美在线人成| 色综合天天天天做夜夜夜夜做| 久久久久久久久免费| 蜜桃av一区二区| 91精品国产高清一区二区三区蜜臀| 亚洲丝袜美腿综合| 成人av电影在线播放| 久久久久国产免费免费| 卡一卡二国产精品 | 精品系列免费在线观看| 欧美二区三区91| 日日摸夜夜添夜夜添精品视频| 在线观看视频一区二区| 亚洲视频在线观看一区| 99在线热播精品免费| 中文字幕亚洲精品在线观看| 懂色中文一区二区在线播放| 久久久久久久综合| 国产河南妇女毛片精品久久久| 久久噜噜亚洲综合| 国产一区二区日韩精品| 久久精品一二三| 国产经典欧美精品| 国产欧美日韩久久| 豆国产96在线|亚洲| 国产精品毛片无遮挡高清| 丁香婷婷综合色啪| 亚洲欧洲日韩女同| 91麻豆.com| 亚洲影视在线观看| 欧美日韩不卡在线| 日韩电影网1区2区| 精品国产乱码久久| 成人性视频免费网站| 国产精品成人免费在线| 色琪琪一区二区三区亚洲区| 一区二区高清在线| 欧美午夜片在线观看| 天天操天天色综合| 日韩免费视频线观看| 国产制服丝袜一区| 国产精品二区一区二区aⅴ污介绍| kk眼镜猥琐国模调教系列一区二区| 最新成人av在线| 欧美视频一区二区三区四区| 天堂va蜜桃一区二区三区| 日韩视频一区二区在线观看| 精品一区二区久久| 中文乱码免费一区二区| 一本久久综合亚洲鲁鲁五月天| 亚洲国产视频在线| 欧美一级一区二区| 国产精品 欧美精品| 自拍av一区二区三区| 精品视频一区 二区 三区| 日韩电影在线观看网站| 国产日韩精品视频一区| 色天使色偷偷av一区二区| 日韩激情视频在线观看| 久久网这里都是精品| 9久草视频在线视频精品| 亚洲一区二区三区影院| 日韩免费看的电影| 99久久久精品| 日韩精品福利网| 亚洲国产成人在线| 欧美视频精品在线| 国产一区二区三区综合| 亚洲欧美日韩中文播放| 欧美一区二区三区视频| www.日韩av| 日一区二区三区| 国产精品日韩精品欧美在线| 欧美色老头old∨ideo| 国产在线日韩欧美| 一区二区三区四区国产精品| 日韩午夜电影av| 91网上在线视频| 美美哒免费高清在线观看视频一区二区 | 亚洲一区自拍偷拍| 久久色在线视频| 欧美日韩一区三区四区| 国产精品亚洲第一区在线暖暖韩国| 一区二区三区在线免费播放| 久久综合色天天久久综合图片| 色乱码一区二区三区88| 激情小说欧美图片| 亚洲国产视频a| 国产精品久久久久久久浪潮网站| 欧美绝品在线观看成人午夜影视| 99视频精品全部免费在线| 精品亚洲成a人| 舔着乳尖日韩一区| 国产精品高潮呻吟| 久久久久99精品国产片| 欧美精品 日韩| 在线观看一区不卡| 成人黄页毛片网站| 国内精品在线播放| 日本不卡一二三区黄网| 亚洲愉拍自拍另类高清精品| 国产精品毛片久久久久久久| 日韩女同互慰一区二区| 欧美日韩在线精品一区二区三区激情| 国产成人av电影在线播放| 美日韩一区二区三区| 亚洲成人自拍网| 亚洲免费观看在线观看| 欧美激情资源网| 久久久久国产精品麻豆| 欧美大片在线观看一区| 欧美精品成人一区二区三区四区| 91精品福利在线| 色综合天天综合在线视频| 国产高清精品久久久久| 国产呦精品一区二区三区网站| 秋霞影院一区二区| 午夜电影网一区| 亚洲制服欧美中文字幕中文字幕| 亚洲欧洲美洲综合色网| 国产精品入口麻豆原神| 中文字幕欧美激情| 欧美高清在线一区| 国产精品久久毛片av大全日韩| 久久久久久一级片| 国产亚洲综合性久久久影院| 精品盗摄一区二区三区| 精品国产一区二区三区不卡| 欧美一区二区免费观在线| 在线播放91灌醉迷j高跟美女| 欧美日韩一区二区三区四区五区| 欧洲一区二区av| 欧美日本国产视频| 精品婷婷伊人一区三区三| 欧美午夜精品理论片a级按摩| 欧美色区777第一页| 欧美日韩国产成人在线免费| 欧美日韩一区二区在线视频| 欧美日韩一区二区三区四区| 在线播放国产精品二区一二区四区| 欧美日韩一本到| 欧美一区二区视频免费观看| 欧美一区三区四区| 日韩欧美一区电影| 精品动漫一区二区三区在线观看| 久久久久久久久久看片| 中文在线免费一区三区高中清不卡| 国产精品黄色在线观看| 亚洲精品国产无套在线观| 午夜一区二区三区在线观看| 日本亚洲一区二区| 国产一区二区三区最好精华液| 国产乱子伦视频一区二区三区|