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

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

?? transport.cpp

?? iptux是linux下面能實現類似windows里面飛鴿傳書的功能
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
//// C++ Implementation: Transport//// Description:////// Author: Jally <jallyx@163.com>, (C) 2008//// Copyright: See COPYING file that comes with this distribution////#include "Transport.h"#include "Command.h"#include "Pal.h"#include "my_file.h"#include "baling.h"#include "utils.h" Transport::Transport():transport(NULL), trans_view(NULL), trans_model(NULL),flag(0){}Transport::~Transport(){	if (transport)		gtk_widget_destroy(transport);	g_object_unref(trans_model);}void Transport::InitSelf(){	trans_model = CreateTransModel();}bool Transport::TransportActive(){	GtkTreeIter iter;	gint terminate;	if (!gtk_tree_model_get_iter_first(trans_model, &iter))		return false;	do {		gtk_tree_model_get(trans_model, &iter, 8, &terminate, -1);		if (terminate == 0)	//Runing(0)			return true;	} while (gtk_tree_model_iter_next(trans_model, &iter));	return false;}void Transport::TransportEntry(){	extern Transport trans;	if (trans.CheckExist())		return;	trans.CreateTransView();	trans.CreateTransDialog();}void Transport::RecvFileEntry(GtkTreePath * path){	extern Transport trans;	GtkTreeIter iter;	uint32_t fileattr;	gboolean result;	gdk_threads_enter();	result = gtk_tree_model_get_iter(trans.trans_model, &iter, path);	gtk_tree_path_free(path);	if (!result) {		gdk_threads_leave();		return;	}	gtk_tree_model_get(trans.trans_model, &iter, 12, &fileattr, -1);	gdk_threads_leave();	switch (GET_MODE(fileattr)) {	case IPMSG_FILE_REGULAR:		trans.RecvFileData(&iter);		break;	case IPMSG_FILE_DIR:		trans.RecvDirFiles(&iter);		break;	default:		break;	}}void Transport::SendFileEntry(int sock, GtkTreeIter * iter, uint32_t fileattr){	extern Transport trans;	gdk_threads_enter();	TransportEntry();	gdk_threads_leave();	switch (GET_MODE(fileattr)) {	case IPMSG_FILE_REGULAR:		trans.SendFileData(sock, iter);		break;	case IPMSG_FILE_DIR:		trans.SendDirFiles(sock, iter);		break;	default:		break;	}}//傳輸 15,0 status,1 task,2 filename,3 side,4 finishsize,5 filesize,6 rate,7 progress,//      8 terminate,9 packetn,10 fileid,11 size,12 type,13,dst,14 data//terminate,0 Runing,1 Over,-1 InterruptGtkTreeModel *Transport::CreateTransModel(){	GtkListStore *model;	model = gtk_list_store_new(15,				   GDK_TYPE_PIXBUF, G_TYPE_STRING,				   G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING,				   G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INT,				   G_TYPE_INT, G_TYPE_UINT, G_TYPE_UINT,				   G_TYPE_UINT, G_TYPE_UINT, G_TYPE_STRING,				   G_TYPE_POINTER);	return GTK_TREE_MODEL(model);}bool Transport::CheckExist(){	if (!transport)		return false;	gtk_window_present(GTK_WINDOW(transport));	return true;}void Transport::CreateTransView(){	GtkCellRenderer *renderer;	GtkTreeViewColumn *column;	trans_view = gtk_tree_view_new_with_model(trans_model);	g_signal_connect(trans_view, "button-press-event",			 G_CALLBACK(PopupControlMenu), this);	gtk_widget_show(trans_view);	column = gtk_tree_view_column_new();	gtk_tree_view_column_set_resizable(column, TRUE);	gtk_tree_view_column_set_title(column, _("state"));	renderer = gtk_cell_renderer_pixbuf_new();	gtk_tree_view_column_pack_start(column, renderer, FALSE);	gtk_tree_view_column_set_attributes(column, renderer, "pixbuf", 0,					    NULL);	gtk_tree_view_append_column(GTK_TREE_VIEW(trans_view), column);	column = gtk_tree_view_column_new();	gtk_tree_view_column_set_resizable(column, TRUE);	gtk_tree_view_column_set_title(column, _("task"));	renderer = gtk_cell_renderer_text_new();	gtk_tree_view_column_pack_start(column, renderer, FALSE);	gtk_tree_view_column_set_attributes(column, renderer, "text", 1, NULL);	gtk_tree_view_append_column(GTK_TREE_VIEW(trans_view), column);	column = gtk_tree_view_column_new();	gtk_tree_view_column_set_resizable(column, TRUE);	gtk_tree_view_column_set_title(column, _("filename"));	renderer = gtk_cell_renderer_text_new();	gtk_tree_view_column_pack_start(column, renderer, FALSE);	gtk_tree_view_column_set_attributes(column, renderer, "text", 2, NULL);	gtk_tree_view_append_column(GTK_TREE_VIEW(trans_view), column);	column = gtk_tree_view_column_new();	gtk_tree_view_column_set_resizable(column, TRUE);	gtk_tree_view_column_set_title(column, _("pal"));	renderer = gtk_cell_renderer_text_new();	gtk_tree_view_column_pack_start(column, renderer, FALSE);	gtk_tree_view_column_set_attributes(column, renderer, "text", 3, NULL);	gtk_tree_view_append_column(GTK_TREE_VIEW(trans_view), column);	column = gtk_tree_view_column_new();	gtk_tree_view_column_set_resizable(column, TRUE);	gtk_tree_view_column_set_title(column, _("finished"));	renderer = gtk_cell_renderer_text_new();	gtk_tree_view_column_pack_start(column, renderer, FALSE);	gtk_tree_view_column_set_attributes(column, renderer, "text", 4, NULL);	gtk_tree_view_append_column(GTK_TREE_VIEW(trans_view), column);	column = gtk_tree_view_column_new();	gtk_tree_view_column_set_resizable(column, TRUE);	gtk_tree_view_column_set_title(column, _("length"));	renderer = gtk_cell_renderer_text_new();	gtk_tree_view_column_pack_start(column, renderer, FALSE);	gtk_tree_view_column_set_attributes(column, renderer, "text", 5, NULL);	gtk_tree_view_append_column(GTK_TREE_VIEW(trans_view), column);	column = gtk_tree_view_column_new();	gtk_tree_view_column_set_resizable(column, TRUE);	gtk_tree_view_column_set_title(column, _("rate"));	renderer = gtk_cell_renderer_text_new();	gtk_tree_view_column_pack_start(column, renderer, FALSE);	gtk_tree_view_column_set_attributes(column, renderer, "text", 6, NULL);	gtk_tree_view_append_column(GTK_TREE_VIEW(trans_view), column);	column = gtk_tree_view_column_new();	gtk_tree_view_column_set_resizable(column, TRUE);	gtk_tree_view_column_set_title(column, _("progress"));	renderer = gtk_cell_renderer_progress_new();	gtk_tree_view_column_pack_start(column, renderer, TRUE);	gtk_tree_view_column_set_attributes(column, renderer, "value", 7, NULL);	gtk_tree_view_append_column(GTK_TREE_VIEW(trans_view), column);}void Transport::CreateTransDialog(){	GtkWidget *box, *sw;	GtkWidget *hbb, *button;	transport = create_window(_("Transmission management"), 132, 79);	gtk_container_set_border_width(GTK_CONTAINER(transport), 5);	g_signal_connect(transport, "destroy", G_CALLBACK(DestroyDialog), NULL);	box = create_box();	gtk_container_add(GTK_CONTAINER(transport), box);	sw = create_scrolled_window();	gtk_box_pack_start(GTK_BOX(box), sw, TRUE, TRUE, 0);	gtk_container_add(GTK_CONTAINER(sw), trans_view);	hbb = create_button_box(FALSE);	gtk_box_pack_start(GTK_BOX(box), hbb, FALSE, FALSE, 0);	button = gtk_button_new_from_stock(GTK_STOCK_CLEAR);	gtk_widget_show(button);	g_signal_connect_swapped(button, "clicked", G_CALLBACK(TidyTask), this);	gtk_box_pack_start(GTK_BOX(hbb), button, FALSE, FALSE, 0);}void Transport::RecvFileData(GtkTreeIter * iter){	uint32_t packetno, fileid, filesize, size;	gchar *filename, *pathname;	char buf[MAX_SOCKBUF];	my_file mf(true);	Command cmd;	int sock, fd;	Pal *pal;	gdk_threads_enter();	gtk_tree_model_get(trans_model, iter, 2, &filename, 9, &packetno,			   10, &fileid, 11, &filesize, 13, &pathname, 14, &pal,			   -1);	gdk_threads_leave();	sock = Socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);	mf.chdir(pathname);	fd = mf.open(filename, O_WRONLY | O_CREAT | O_TRUNC | O_LARGEFILE,		     00644);	g_free(filename), g_free(pathname);	if (fd == -1 || !cmd.SendAskData(sock, pal, packetno, fileid, 0)) {		EndTransportData(sock, fd, iter, __TIP_DIR "/error.png");		return;	}	size = RecvData(sock, fd, iter, filesize, buf, 0);	if (size >= filesize)		EndTransportData(sock, fd, iter, __TIP_DIR "/finish.png");	else		EndTransportData(sock, fd, iter, __TIP_DIR "/error.png");}void Transport::RecvDirFiles(GtkTreeIter * iter){	uint32_t packetno, fileid, headsize, filesize, fileattr;	gchar *dirname, *pathname, *filename;	char buf[MAX_SOCKBUF], *ptr;	my_file mf(true);	Command cmd;	gint terminate;	int sock, fd;	int layers;	ssize_t size;	bool result;	size_t len;	Pal *pal;	gdk_threads_enter();	gtk_tree_model_get(trans_model, iter, 2, &dirname, 9, &packetno,			   10, &fileid, 13, &pathname, 14, &pal, -1);	gdk_threads_leave();	sock = Socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);	mf.chdir(pathname), g_free(pathname);	if (!cmd.SendAskFiles(sock, pal, packetno, fileid)) {		EndTransportData(sock, -1, iter, __TIP_DIR "/error.png");		g_free(dirname);		return;	}	layers = 0, len = 0, result = false;	while (1) {		if ((size = my_read2(sock, buf, MAX_SOCKBUF, len)) == -1)			break;		headsize = iptux_get_hex_number(buf, 0);		pathname = ipmsg_get_filename(buf, 1);		filesize = iptux_get_hex_number(buf, 2);		fileattr = iptux_get_hex_number(buf, 3);		len = size - headsize;		if (!FLAG_ISSET(pal->flags, 0)) {			filename =			    transfer_encode(pathname, pal->encode, false);			free(pathname);		} else			filename = pathname;		if (GET_MODE(fileattr) != IPMSG_FILE_RETPARENT) {			ptr = number_to_string(filesize);			gdk_threads_enter();			gtk_list_store_set(GTK_LIST_STORE(trans_model), iter, 2,					   filename, 4, "0B", 5, ptr, 6, "0B/s",					   7, 0, -1);			gtk_tree_model_get(trans_model, iter, 8, &terminate,					   -1);			gdk_threads_leave();			free(ptr);			if (terminate == -1)				goto end;		}		if (GET_MODE(fileattr) == IPMSG_FILE_DIR) {			mf.chdir(filename), free(filename);			memmove(buf, buf + headsize, len);			layers++;			continue;		} else if (GET_MODE(fileattr) == IPMSG_FILE_RETPARENT) {			mf.chdir(".."), free(filename);			memmove(buf, buf + headsize, len);			if ((--layers) <= 0)				break;			continue;		} else if (GET_MODE(fileattr) == IPMSG_FILE_REGULAR) {			fd = mf.open(filename,				     O_WRONLY | O_CREAT | O_TRUNC | O_LARGEFILE,				     00644);			free(filename);			if (fd == -1)				goto end;		} else {			free(filename);			if ((fd = Open("/dev/null", O_WRONLY)) == -1)				goto end;		}		size = len < filesize ? len : filesize;		if (Write(fd, buf + headsize, size) == -1) {			close(fd);			goto end;		}		if (size == filesize) {			close(fd);			if (len -= size)				memmove(buf, buf + headsize + size, len);			ptr = number_to_string(size);			gdk_threads_enter();			gtk_list_store_set(GTK_LIST_STORE(trans_model), iter,					   4, ptr, 7, 100, -1);			gdk_threads_leave();			free(ptr);			continue;		}		headsize = RecvData(sock, fd, iter, filesize, buf, size);		close(fd), len = 0;		if (headsize < filesize)			goto end;	}	result = true; end:	if (result) {		EndTransportData(sock, -1, iter, __TIP_DIR "/finish.png");		EndTransportDirFiles(iter, dirname);	} else {		EndTransportData(sock, -1, iter, __TIP_DIR "/error.png");		g_free(dirname);	}}uint32_t Transport::RecvData(int sock, int fd, GtkTreeIter * iter,			     uint32_t filesize, char *buf, uint32_t offset){

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧洲精品一区二区精品久久久| 国产欧美日韩视频在线观看| 99久久伊人久久99| 国产一区二区三区蝌蚪| 国产精品一区久久久久| 国产一区二区看久久| 久久国产剧场电影| 另类小说一区二区三区| 久久精品99久久久| 久久66热re国产| 国产精品中文字幕欧美| 国产·精品毛片| 成人网在线播放| 91麻豆福利精品推荐| 欧美网站一区二区| 精品国产成人系列| 久久久久久久网| 亚洲欧美aⅴ...| 日本视频中文字幕一区二区三区| 蜜臀av性久久久久蜜臀aⅴ四虎| 蜜桃在线一区二区三区| 大白屁股一区二区视频| 欧美怡红院视频| 久久奇米777| 中文字幕一区二区视频| 亚洲第一福利一区| 国产成人亚洲综合a∨婷婷| 日本久久电影网| 精品久久久久久久久久久久久久久久久 | 婷婷六月综合网| 久88久久88久久久| 日本久久精品电影| 久久日韩粉嫩一区二区三区 | 欧美日韩三级在线| 欧美精品一区二区高清在线观看| 国产精品久久久久久一区二区三区| 亚洲高清在线精品| 成人高清伦理免费影院在线观看| 欧美裸体一区二区三区| 国产精品国产精品国产专区不片| 免费高清在线一区| 在线观看亚洲a| 欧美国产日本韩| 日本成人中文字幕| 欧美自拍偷拍午夜视频| 国产精品―色哟哟| 国产资源在线一区| 制服丝袜成人动漫| 亚洲欧美日韩国产综合在线| 国产精品一区二区久久不卡 | 亚洲精品国产品国语在线app| 国内久久精品视频| 9191成人精品久久| 亚洲日本欧美天堂| 国产91色综合久久免费分享| 日韩视频在线永久播放| 亚洲综合一区二区精品导航| 成人黄色av网站在线| 久久久久国产精品麻豆ai换脸| 天天操天天综合网| 欧美色综合天天久久综合精品| 最新国产成人在线观看| 国产精品69久久久久水密桃| 精品国产成人系列| 国产一区二区三区日韩| 欧美本精品男人aⅴ天堂| 日韩国产一区二| 欧美电影影音先锋| 视频一区二区三区中文字幕| 欧美日韩中文字幕精品| 一区二区高清在线| 欧美在线免费观看亚洲| 一级日本不卡的影视| 日本丶国产丶欧美色综合| 亚洲欧美偷拍另类a∨色屁股| eeuss鲁片一区二区三区在线看| 国产人成亚洲第一网站在线播放 | 欧美专区亚洲专区| 五月激情综合婷婷| 日韩视频国产视频| 久久99久久精品| 久久久久久麻豆| 北条麻妃国产九九精品视频| 日本一区二区电影| 97久久久精品综合88久久| 亚洲色图视频网| 欧美日韩国产美女| 久久精品国产精品青草| 国产欧美精品国产国产专区| av一区二区久久| 亚洲精品中文字幕乱码三区| 欧美丰满少妇xxxxx高潮对白| 日本vs亚洲vs韩国一区三区二区| 精品欧美久久久| 成人免费视频国产在线观看| 中文字幕日韩一区二区| 欧美在线播放高清精品| 美女一区二区在线观看| 国产精品萝li| 欧美视频中文字幕| 国内成人免费视频| 亚洲乱码国产乱码精品精的特点 | 亚洲成av人片观看| 久久综合九色欧美综合狠狠| 91蜜桃免费观看视频| 免费xxxx性欧美18vr| 国产欧美日韩另类视频免费观看| 色av成人天堂桃色av| 美女一区二区视频| 亚洲色图欧洲色图婷婷| 日韩免费电影网站| 91一区二区在线| 另类中文字幕网| 有坂深雪av一区二区精品| 精品国产乱码久久久久久牛牛 | 国产很黄免费观看久久| 亚洲高清免费视频| 中文字幕成人网| 欧美一区二区久久久| 色婷婷精品大视频在线蜜桃视频| 看电视剧不卡顿的网站| 亚洲午夜影视影院在线观看| 欧美国产视频在线| 日韩网站在线看片你懂的| 色综合久久综合| 国产激情精品久久久第一区二区| 天天影视色香欲综合网老头| 亚洲免费在线观看| 日本一区二区在线不卡| 粉嫩aⅴ一区二区三区四区| 欧美一级片在线| av午夜一区麻豆| 美女精品一区二区| 夜夜嗨av一区二区三区网页| 国产日韩欧美一区二区三区乱码| 制服丝袜成人动漫| 欧美性大战久久| 成人国产亚洲欧美成人综合网| 蜜臀a∨国产成人精品| 香蕉影视欧美成人| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 色婷婷综合在线| 国内一区二区视频| 免费在线观看日韩欧美| 一区二区三区免费看视频| 国产精品久久久久婷婷二区次| 欧美成人在线直播| 日韩欧美一级特黄在线播放| 在线观看区一区二| 日本丶国产丶欧美色综合| 99视频精品在线| 成人午夜电影久久影院| 粉嫩av一区二区三区| 国产酒店精品激情| 国产福利视频一区二区三区| 国产麻豆成人精品| 国产激情视频一区二区三区欧美| 国产主播一区二区| 国产高清无密码一区二区三区| 国产一区不卡精品| 东方aⅴ免费观看久久av| 福利电影一区二区三区| bt7086福利一区国产| 99国产精品久| 欧美三级电影精品| 日韩午夜av电影| 久久精品日产第一区二区三区高清版| 国产日韩欧美不卡在线| 综合久久久久综合| 五月婷婷另类国产| 韩国午夜理伦三级不卡影院| 暴力调教一区二区三区| 欧美一a一片一级一片| 欧美成人a在线| 国产精品人妖ts系列视频| 一区二区久久久久久| 久久精品国产精品亚洲红杏| 成人黄色av网站在线| 欧美色图一区二区三区| 精品国产麻豆免费人成网站| 国产精品传媒入口麻豆| 午夜一区二区三区在线观看| 国产永久精品大片wwwapp| 97久久超碰精品国产| 777午夜精品免费视频| 欧美高清在线精品一区| 婷婷综合在线观看| 大美女一区二区三区| 欧美久久婷婷综合色| 国产精品久久毛片av大全日韩| 午夜精品久久久久久久| 高清在线不卡av| 日韩欧美亚洲国产另类| 亚洲精选视频免费看| 国内成人免费视频| 欧美日韩视频在线第一区 | 国产在线精品一区二区夜色| 91亚洲男人天堂| 国产亚洲欧美色| 青青草精品视频|