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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? async.cxx

?? c-smile 一個語法類似與JS 又有點像C++的 編譯器
?? CXX
字號:
//-< ASYNC.CXX >-----------------------------------------------------*--------*
// SAL                       Version 1.0         (c) 1997  GARRET    *     ?  *
// (System Abstraction Layer)                                        *   /\|  *
//                                                                   *  /  \  *
//                          Created:      7-Jan-97    K.A. Knizhnik  * / [] \ *
//                          Last update: 21-Nov-98    K.A. Knizhnik  * GARRET *
//-------------------------------------------------------------------*--------*
// Asyncronous event manager for cooperative multitasking in Unix 
//-------------------------------------------------------------------*--------*

#include "async.h"

#include <unistd.h>
#include <errno.h>
#include <signal.h>
#include <fcntl.h>
#include <sys/time.h>
#include <sys/types.h>

namespace sal
{

unsigned  async_event_manager::n_desc;
fd_set    async_event_manager::input_desc;
fd_set    async_event_manager::output_desc;
timeout_t async_event_manager::select_timeout;
l2elem    async_event_manager::active_timers; 

dnm_array<unix_socket*> async_event_manager::sockets;

void async_event_manager::attach_input_channel(unix_socket* s)
{
    if (unsigned(s->fd) >= n_desc) { 
	n_desc = s->fd + 1;
    }
    sockets[s->fd] = s; 
    FD_SET(s->fd, &input_desc);
}

void async_event_manager::detach_input_channel(unix_socket* s)
{
    if (unsigned(s->fd) < n_desc) { 
	FD_CLR(s->fd, &input_desc);
    }
}

void async_event_manager::attach_output_channel(unix_socket* s)
{
    if (unsigned(s->fd) >= n_desc) { 
	n_desc = s->fd + 1;
    }
    sockets[s->fd] = s; 
    FD_SET(s->fd, &output_desc);
}

void async_event_manager::detach_output_channel(unix_socket* s)
{
    if (unsigned(s->fd) < n_desc) { 
	FD_CLR(s->fd, &output_desc);
    }
}

void async_event_manager::add_timer(ctimer* tmr)
{
    tmr->link_after(&active_timers);
    if (tmr->timeout <= select_timeout-1) { 
	select_timeout = tmr->timeout;
    }
}


void async_event_manager::select(boolean wait) 
{
    int rc;
    int n = n_desc;
    static fd_set  readfds;
    static fd_set  writefds;
    struct timeval timeout;

    readfds = input_desc;
    writefds = output_desc;
    
    if (wait) { 
	timeout.tv_sec = select_timeout/1000;
	timeout.tv_usec = select_timeout%1000*1000;
    } else { 
	timeout.tv_sec = 0;
	timeout.tv_usec = 0;
    } 
    rc = ::select(n, &readfds, &writefds, NULL, 
		  !wait || select_timeout ? &timeout : (struct timeval*)0);
    
    unix_socket** spp = &sockets; 

    if (rc < 0) {
	if (errno == EBADF) { 
	    static struct timeval nowait;
	    FD_ZERO(&readfds); 
	    FD_ZERO(&writefds); 
	    /* Try to find bad descriptor */
	    for (int i = 0; i < n; i++) { 
		if (FD_ISSET(i, &input_desc)) {
		    FD_SET(i, &readfds);
		    while ((rc=::select(i+1, &readfds, NULL, NULL, &nowait))<0
			   && errno == EINTR);
		    if (rc != 0 && errno == EBADF) { 
			FD_CLR(i, &input_desc);
			spp[i]->input_sem.signal(); 			
		    }
		    FD_CLR(i, &readfds);
		}
		if (FD_ISSET(i, &output_desc)) {
		    FD_SET(i, &writefds);
		    while ((rc=::select(i+1, NULL, &writefds, NULL, &nowait))<0
			   && errno == EINTR);
		    if (rc != 0 && errno == EBADF) { 
			FD_CLR(i, &output_desc);
			spp[i]->output_sem.signal(); 			
		    }
		    FD_CLR(i, &writefds);
		}
	    }
	}    
	return;
    }

    while (--n >= 0) { 
	if (FD_ISSET(n, &readfds)) { 
	    spp[n]->input_sem.signal(); 
	}
	if (FD_ISSET(n, &writefds)) { 
	    spp[n]->output_sem.signal(); 
	}
    }

    if (select_timeout) { 
	struct timeval cur_tv;
        gettimeofday(&cur_tv, NULL);
	timeout_t current_time = cur_tv.tv_sec*1000 + cur_tv.tv_usec/1000;

	ctimer *tmr = (ctimer*)active_timers.next;
	select_timeout = 0;
	while (tmr != &active_timers) { 
	    ctimer* next = (ctimer*)tmr->next;
	    timeout_t delta = tmr->start + tmr->timeout - current_time; 

	    if (int(delta) <= 0) { 
		tmr->expired();
	    } else { 
		if (delta <= select_timeout-1) {
		    select_timeout = delta; 
		}
	    }
	    tmr = next; 
	}
    }
}

};

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色婷婷综合激情| 国产成人精品免费一区二区| 91精品国产综合久久蜜臀 | 99re成人在线| 蜜臀av性久久久久av蜜臀妖精 | 亚洲综合免费观看高清在线观看| 久久久午夜精品理论片中文字幕| 欧美成人r级一区二区三区| 欧美这里有精品| 91天堂素人约啪| 99久久婷婷国产综合精品 | 久久一区二区三区四区| 91精品麻豆日日躁夜夜躁| 欧美日韩一区二区三区四区 | 亚洲成av人在线观看| 亚洲线精品一区二区三区八戒| 日韩一区有码在线| 樱桃视频在线观看一区| 亚洲欧美偷拍卡通变态| 亚洲美女在线国产| 亚洲伊人色欲综合网| 亚洲一区在线播放| 性久久久久久久| 日本不卡一二三| 精品一区二区三区的国产在线播放| 美国欧美日韩国产在线播放| 精品一区二区精品| 国产黄色成人av| 免费在线一区观看| 国产成人啪午夜精品网站男同| 国产成人在线视频网址| 91亚洲男人天堂| 色欧美日韩亚洲| 欧美片网站yy| 精品久久久影院| 中文字幕一区二区三区色视频| 亚洲视频资源在线| 日韩精品五月天| 国产成人免费视频网站高清观看视频 | 国产在线视频一区二区三区| 99精品黄色片免费大全| 欧美日韩高清影院| 国产精品国产自产拍高清av | 成人黄色国产精品网站大全在线免费观看 | 秋霞午夜av一区二区三区| 成人激情小说网站| 宅男在线国产精品| 亚洲欧美另类久久久精品2019| 蜜臀av性久久久久蜜臀aⅴ| 95精品视频在线| 国产日本欧美一区二区| 青草国产精品久久久久久| 91蝌蚪porny成人天涯| 国产三级久久久| 久久精品国产99| 欧美久久久影院| 一区二区三区欧美视频| fc2成人免费人成在线观看播放| 欧美成人高清电影在线| 视频一区免费在线观看| 欧美午夜寂寞影院| 亚洲视频电影在线| av午夜精品一区二区三区| 久久综合五月天婷婷伊人| 日韩av一区二区在线影视| 欧美视频在线一区| 一二三四社区欧美黄| 日本韩国欧美国产| 一片黄亚洲嫩模| 欧美午夜宅男影院| 亚洲福中文字幕伊人影院| 欧美专区在线观看一区| 亚洲激情在线激情| 欧美少妇一区二区| 日韩av网站免费在线| 欧美一区二区三区视频在线观看| 午夜影院久久久| 欧美精品视频www在线观看| 亚瑟在线精品视频| 日韩视频永久免费| 久久99国产精品麻豆| 久久这里只有精品视频网| 国产乱码精品一区二区三区忘忧草| 欧美变态tickling挠脚心| 六月丁香综合在线视频| 久久久亚洲高清| 成人国产免费视频| 亚洲摸摸操操av| 欧美日韩精品一区二区| 日韩高清不卡在线| 精品成人a区在线观看| 福利91精品一区二区三区| 综合中文字幕亚洲| 欧美日韩国产精品成人| 蜜桃精品视频在线观看| 欧美激情在线一区二区| 91香蕉视频污在线| 日韩高清在线一区| 国产日韩欧美亚洲| 欧美午夜精品久久久久久超碰| 日本 国产 欧美色综合| 欧美国产国产综合| 欧美日韩国产乱码电影| 国产激情一区二区三区| 亚洲一区在线视频观看| 久久免费电影网| 欧美日韩一区二区欧美激情| 精品一区二区三区在线播放| 亚洲乱码国产乱码精品精98午夜 | 麻豆国产欧美一区二区三区| 久久久久9999亚洲精品| 91极品视觉盛宴| 激情文学综合网| 亚洲线精品一区二区三区八戒| 精品不卡在线视频| 欧美亚洲国产一区二区三区| 国产一区二区精品久久99| 亚洲中国最大av网站| 中文字幕av资源一区| 欧美一区二区三区小说| 色综合激情久久| 福利电影一区二区| 久久66热偷产精品| 丝袜诱惑制服诱惑色一区在线观看| 国产女同互慰高潮91漫画| 日韩欧美高清在线| 欧美日韩一区高清| 日本国产一区二区| av成人老司机| 懂色av一区二区三区免费看| 久久精品免费看| 日韩极品在线观看| 视频一区免费在线观看| 一区二区三区精品在线| 欧美国产欧美亚州国产日韩mv天天看完整| 3d成人h动漫网站入口| 色噜噜狠狠色综合中国 | 亚洲人123区| 欧美高清在线一区| 久久久久久免费毛片精品| 欧美一区日本一区韩国一区| 欧美日本在线看| 欧美电影在线免费观看| 欧美在线一区二区| 91成人免费在线视频| 在线观看av不卡| 欧美吻胸吃奶大尺度电影| 在线观看视频91| 欧美三级乱人伦电影| 欧美疯狂性受xxxxx喷水图片| 欧美在线一区二区三区| 欧美美女一区二区在线观看| 在线电影一区二区三区| 欧美一区二区成人| 精品国产乱码久久久久久夜甘婷婷| 欧美成人乱码一区二区三区| 欧美xingq一区二区| 久久久久97国产精华液好用吗| 久久亚洲春色中文字幕久久久| 久久久蜜桃精品| 国产精品乱人伦一区二区| 亚洲欧美色综合| 午夜私人影院久久久久| 免费日韩伦理电影| 国产成人高清视频| 日本久久电影网| 日韩一区二区三区在线观看| 精品国产a毛片| 国产精品欧美精品| 一级特黄大欧美久久久| 日本亚洲电影天堂| 国产成人aaa| 欧美三级日本三级少妇99| 精品免费视频一区二区| 国产精品美女久久久久aⅴ| 亚洲一区二区三区四区五区中文| 日韩电影在线免费看| 国产一区二区剧情av在线| 91麻豆成人久久精品二区三区| 欧美精品v日韩精品v韩国精品v| 精品久久五月天| 一区二区三区日本| 狠狠久久亚洲欧美| 一本大道久久精品懂色aⅴ| 日韩一区二区三免费高清| 欧美国产禁国产网站cc| 日日嗨av一区二区三区四区| 国产成人精品免费视频网站| 欧美中文字幕一区| 国产午夜精品理论片a级大结局| 亚洲综合丝袜美腿| 国产成人a级片| 7777精品伊人久久久大香线蕉超级流畅| 久久久噜噜噜久噜久久综合| 亚洲国产精品久久人人爱| 成人激情午夜影院| 日韩一区和二区| 亚洲成人777| 色婷婷av一区二区三区之一色屋| 精品国产乱码久久久久久牛牛|