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

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

?? server.c

?? linux 下的源代碼分析閱讀器 red hat公司新版
?? C
字號:
#include <sys/types.h>#include <ctype.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <time.h>#include <unistd.h>#include <atmi.h>#include <fml1632.h>#include <fml32.h>#include <tx.h>#include <xa.h>#include <db.h>#include "datafml.h"#include "hdbrec.h"#include "hcommonxa.h"#include "htimestampxa.h"/* * The two servers are largely identical, #ifdef the source code. */#ifdef SERVER1#define	TXN_FUNC		TestTxn1#define	TXN_STRING		"TestTxn1"#endif#ifdef SERVER2#define	TXN_FUNC		TestTxn2#define	TXN_STRING		"TestTxn2"#endifvoid TXN_FUNC(TPSVCINFO *);#define	HOME	"../data"#define	TABLE1	"table1.db"#define	TABLE2	"table2.db"#ifdef VERBOSEstatic int verbose = 1;				/* Debugging output. */#elsestatic int verbose = 0;#endifDB *db1, *db2;					/* Table handles. */int cnt_forward;				/* Forwarded requests. */int cnt_request;				/* Total requests. */char *progname;					/* Server run-time name. */char *db_buf(DBT *);inttpsvrinit(int argc, char* argv[]){	DB_ENV *dbenv;	int ret;	progname = argv[0];	if (verbose)		printf("%s: called\n", progname);	/*	 * This is all Berkeley DB specific.	 *	 * Open the environment and clear tables #1 and #2.  We do this with	 * our own DB_ENV handle -- Berkeley DB doesn't require servers know	 * where the database environment is, but it's pretty much necessary	 * if you want to do anything tricky.	 */	if ((ret = db_env_create(&dbenv, 0)) != 0) {		fprintf(stderr, "db_env_create: %s\n", db_strerror(ret));		return (-1);	}	if ((ret = dbenv->open(dbenv, HOME, DB_JOINENV, 0)) != 0) {		fprintf(stderr,		    "DB_ENV->open: %s: %s\n", HOME, db_strerror(ret));		return (-1);	}	if ((ret = db_create(&db1, dbenv, 0)) != 0) {		fprintf(stderr, "db_create: %s\n", db_strerror(ret));		return (-1);	}	db1->set_errfile(db1, stderr);	if ((ret = db1->open(db1, NULL,	    TABLE1, NULL, DB_BTREE, DB_AUTO_COMMIT | DB_CREATE, 0660)) != 0 ||	    (ret = db1->truncate(db1, NULL, NULL, 0)) != 0) {		fprintf(stderr,		    "DB open/truncate: %s: %s\n", TABLE1, db_strerror(ret));		return (-1);	}	if ((ret = db_create(&db2, dbenv, 0)) != 0) {		fprintf(stderr, "db_create: %s\n", db_strerror(ret));		return (-1);	}	db2->set_errfile(db2, stderr);	if ((ret = db2->open(db2, NULL,	    TABLE2, NULL, DB_BTREE, DB_AUTO_COMMIT | DB_CREATE, 0660)) != 0 ||	    (ret = db2->truncate(db2, NULL, NULL, 0)) != 0) {		fprintf(stderr,		    "DB open/truncate: %s: %s\n", TABLE2, db_strerror(ret));		return (-1);	}	/* We're done -- discard our handles. */	if ((ret = db1->close(db1, 0)) != 0) {		fprintf(stderr,		    "DB->close: %s: %s\n", TABLE1, db_strerror(ret));		return (-1);	}	if ((ret = db2->close(db2, 0)) != 0) {		fprintf(stderr,		    "DB->close: %s: %s\n", TABLE2, db_strerror(ret));		return (-1);	}	if ((ret = dbenv->close(dbenv, 0)) != 0) {		fprintf(stderr,		    "DB_ENV->close: %s: %s\n", HOME, db_strerror(ret));		return (-1);	}	/* End Berkeley DB specific setup. */	/* Open resource managers. */	if (tx_open() == TX_ERROR) {		fprintf(stderr, "tx_open: TX_ERROR\n");		return (-1);	}	/* Seed random number generator. */	srand((u_int)(time(NULL) | getpid()));	/* Open permanent XA handles. */	if ((ret = db_create(&db1, NULL, DB_XA_CREATE)) != 0) {		fprintf(stderr, "db_create: %s\n", db_strerror(ret));		return (-1);	}	db1->set_errfile(db1, stderr);	if ((ret = db1->open(db1, NULL,	    TABLE1, NULL, DB_BTREE, DB_AUTO_COMMIT | DB_CREATE, 0660)) != 0) {		fprintf(stderr, "DB open: %s: %s\n", TABLE1, db_strerror(ret));		return (-1);	}	if ((ret = db_create(&db2, NULL, DB_XA_CREATE)) != 0) {		fprintf(stderr, "db_create: %s\n", db_strerror(ret));		return (-1);	}	db2->set_errfile(db2, stderr);	if ((ret = db2->open(db2, NULL,	    TABLE2, NULL, DB_BTREE, DB_AUTO_COMMIT | DB_CREATE, 0660)) != 0) {		fprintf(stderr, "DB open: %s: %s\n", TABLE2, db_strerror(ret));		return (-1);	}	if (verbose)		printf("%s: tpsvrinit: initialization done\n", progname);	return (0);}voidtpsvrdone(){	if (db1 != NULL)		(void)db1->close(db1, 0);	if (db2 != NULL)		(void)db2->close(db2, 0);	tx_close();	if (verbose)		printf("%s: tpsvrdone: shutdown done\n", progname);	printf("%s: %d requests, %d requests forwarded to the other server\n",	    progname, cnt_request, cnt_forward);}voidTXN_FUNC(TPSVCINFO *msg){	DBT data;	DBT key;	FBFR *replyBuf;	HDbRec rcrd;	long replyLen, seqNo;	int ret;	++cnt_request;#ifdef SERVER1	/*	 * Test that servers can forward to other servers.  Randomly forward	 * half of server #1's requests to server #2.	 */	if (rand() % 2 > 0) {		++cnt_forward;		replyLen = 1024;		if ((replyBuf =		    (FBFR*)tpalloc("FML32", NULL, replyLen)) == NULL ||		    tpcall("TestTxn2", msg->data,		    0, (char**)&replyBuf, &replyLen, TPSIGRSTRT) == -1) {			fprintf(stderr, "%s: TUXEDO ERROR: %s (code %d)\n",			    progname, tpstrerror(tperrno), tperrno);			tpfree((char*)replyBuf);			tpreturn(TPFAIL, 0L, 0, 0L, 0);		} else {			tpfree((char*)replyBuf);			tpreturn(TPSUCCESS, tpurcode, 0, 0L, 0);		}		return;	}#endif						/* Read the record. */	if (Fget((FBFR*)msg->data, SEQ_NO, 0, (char *)&rcrd.SeqNo, 0) == -1)		goto fml_err;	if (Fget((FBFR*)msg->data, TS_SEC, 0, (char *)&rcrd.Ts.Sec, 0) == -1)		goto fml_err;	if (Fget(	    (FBFR*)msg->data, TS_USEC, 0, (char *)&rcrd.Ts.Usec, 0) == -1) {fml_err:	fprintf(stderr, "%s: FML ERROR: %s (code %d)\n",		    progname, Fstrerror(Ferror), Ferror);		goto err;	}	seqNo = rcrd.SeqNo;			/* Update the record. */	memset(&key, 0, sizeof(key));	key.data = &seqNo;	key.size = sizeof(seqNo);	memset(&data, 0, sizeof(data));	data.data = &rcrd;	data.size = sizeof(rcrd);	strcpy(rcrd.Msg, "Table1");		/* Table 1. */	if (verbose) {		printf("put1: key: %s\n", db_buf(&key));		printf("put1: data: %s\n", db_buf(&data));	}	if ((ret = db1->put(db1, NULL, &key, &data, 0)) != 0) {		fprintf(stderr, "%s: %s: Table1->put: %s\n",		    progname, TXN_STRING, db_strerror(ret));		goto err;	}	strcpy(rcrd.Msg, "Table2");		/* Table 2. */	if ((ret = db2->put(db2, NULL, &key, &data, 0)) != 0) {		fprintf(stderr, "%s: %s: Table2->put: %s\n",		    progname, TXN_STRING, db_strerror(ret));		goto err;	}	/*	 * Decide if the client is going to commit the global transaction or	 * not, testing the return-value path back to the client; this is the	 * path we'd use to resolve deadlock, for example.  Commit 80% of the	 * time.  Returning 0 causes the client to commit, 1 to abort.	 */	if (rand() % 10 > 7) {		if (verbose)			printf("%s: %s: commit\n", progname, TXN_STRING);		tpreturn(TPSUCCESS, 0L, 0, 0L, 0);	} else {		if (verbose)			printf("%s: %s: abort\n", progname, TXN_STRING);		tpreturn(TPSUCCESS, 1L, 0, 0L, 0);	}	return;err:	tpreturn(TPFAIL, 1L, 0, 0L, 0);}char *db_buf(dbt)	DBT *dbt;{	static u_char buf[1024];	size_t len;	u_char *p, *b;	for (p = dbt->data, len = dbt->size, b = buf; len > 0; ++p, --len)		if (isprint(*p))			b += sprintf((char *)b, "%c", *p);		else			b += sprintf((char *)b, "%#o", *p);	return ((char *)buf);}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美亚洲综合网| 中国av一区二区三区| 欧美亚洲高清一区二区三区不卡| 99久久久国产精品免费蜜臀| 国产福利一区二区三区视频 | 久久免费国产精品| 日韩欧美高清dvd碟片| 日韩午夜在线影院| 欧美一二三在线| 日韩欧美国产一区在线观看| 日韩一区二区三区精品视频| 日韩一级二级三级精品视频| 欧美成人福利视频| 久久久影视传媒| 欧美国产一区视频在线观看| 一区在线观看免费| 亚洲色图制服诱惑| 亚洲国产日韩a在线播放性色| 久久久精品欧美丰满| 国产三级精品三级在线专区| 亚洲国产精品传媒在线观看| 中文字幕一区二区三区蜜月| 亚洲女性喷水在线观看一区| 亚洲1区2区3区4区| 日韩高清不卡在线| 经典三级在线一区| 国产盗摄视频一区二区三区| av激情成人网| 正在播放亚洲一区| 2021久久国产精品不只是精品| 欧美系列日韩一区| 日韩欧美一级在线播放| 中文幕一区二区三区久久蜜桃| 欧美一区二区免费视频| 久久久久88色偷偷免费| 亚洲女人****多毛耸耸8| 日韩国产欧美在线视频| 精品亚洲成av人在线观看| 顶级嫩模精品视频在线看| 91国内精品野花午夜精品| 91精品国产色综合久久ai换脸| 欧美亚洲动漫精品| 欧美一区二区福利在线| 国产欧美精品在线观看| 午夜久久久久久电影| 国产乱妇无码大片在线观看| 色94色欧美sute亚洲13| 日韩欧美你懂的| 亚洲精品一二三| 九九久久精品视频| 在线精品视频小说1| 精品国产乱码久久久久久夜甘婷婷 | 亚洲欧美视频在线观看| 天天色天天爱天天射综合| 成人亚洲一区二区一| 91麻豆精品国产自产在线| 国产精品女人毛片| 麻豆成人91精品二区三区| 99精品视频在线观看| 欧美一级黄色录像| 亚洲精品国产无套在线观| 国产精品一区二区男女羞羞无遮挡| 青青草国产成人av片免费| 99久久伊人网影院| 精品蜜桃在线看| 亚洲国产成人porn| 国产99精品国产| 精品区一区二区| 亚洲成人av一区| 成人亚洲精品久久久久软件| 精品剧情在线观看| 日韩精品乱码免费| 欧美亚洲一区二区三区四区| 中文字幕va一区二区三区| 美女一区二区视频| 宅男噜噜噜66一区二区66| 亚洲精品网站在线观看| 成人美女视频在线观看18| 久久久久亚洲蜜桃| 精品一区二区在线观看| 欧美另类变人与禽xxxxx| 一区二区三区在线视频观看 | 国产精品1024| 欧美不卡视频一区| 奇米在线7777在线精品| 欧美精品黑人性xxxx| 一区二区三区欧美在线观看| 波多野洁衣一区| 国产免费观看久久| 国产精一区二区三区| 久久午夜羞羞影院免费观看| 久久91精品久久久久久秒播| 91麻豆精品国产91久久久久久久久| 91精品国产高清一区二区三区蜜臀| 日韩美女在线视频| 蜜桃91丨九色丨蝌蚪91桃色| 欧美视频完全免费看| 亚洲精品成人精品456| 91麻豆精品秘密| 亚洲欧美日韩国产一区二区三区| 日产国产欧美视频一区精品| 欧美在线三级电影| 亚洲一区二区三区四区在线免费观看| 九色综合狠狠综合久久| 精品国产伦一区二区三区免费 | 国产一区日韩二区欧美三区| 日韩欧美黄色影院| 狠狠色丁香久久婷婷综合丁香| k8久久久一区二区三区| 中文字幕亚洲一区二区av在线| 香蕉久久一区二区不卡无毒影院 | 色吊一区二区三区| 亚洲一区影音先锋| 7777精品久久久大香线蕉| 日日摸夜夜添夜夜添精品视频| 粉嫩av一区二区三区在线播放| 欧美日韩综合色| 日本亚洲一区二区| 欧美videossexotv100| 国内久久精品视频| 亚洲国产精品激情在线观看| 91在线观看成人| 亚洲一区二区三区四区五区黄| 成人午夜私人影院| 国产精品久久久久影院老司| 91免费版pro下载短视频| 亚洲一区中文在线| 精品少妇一区二区三区| 高清在线不卡av| 亚洲欧美日韩电影| 欧美日韩二区三区| 国产一区在线不卡| ㊣最新国产の精品bt伙计久久| 韩国av一区二区| 亚洲色图清纯唯美| 在线综合亚洲欧美在线视频 | 91视视频在线观看入口直接观看www| 亚洲精品在线免费播放| 成人妖精视频yjsp地址| 亚洲成人综合网站| 精品播放一区二区| 色先锋资源久久综合| 美日韩黄色大片| 亚洲区小说区图片区qvod| 欧美一区午夜精品| av不卡一区二区三区| 亚洲狠狠爱一区二区三区| 国产亚洲一区二区三区在线观看 | 久久精品国产网站| 国产精品女同一区二区三区| 在线观看成人小视频| 久久se精品一区精品二区| 国产精品麻豆久久久| 8x福利精品第一导航| 高清不卡一区二区在线| 午夜国产精品一区| 中文一区在线播放| 91精品国产综合久久福利软件 | 91黄色免费网站| 国产精品88av| 视频一区在线播放| 亚洲欧洲日韩在线| 精品国产免费人成在线观看| 91丝袜国产在线播放| 国产主播一区二区三区| 亚洲高清视频的网址| 国产精品色在线观看| 欧美大片在线观看一区| 欧美三级一区二区| 成人禁用看黄a在线| 久久狠狠亚洲综合| 偷拍日韩校园综合在线| 亚洲三级电影网站| 国产精品网站在线观看| 欧美sm美女调教| 欧美一区二区视频观看视频 | 日韩精品一区二区三区中文不卡| 久久99国产精品尤物| 亚洲午夜免费福利视频| 亚洲欧洲日产国产综合网| 久久久久久久综合日本| 欧美草草影院在线视频| 91精品国产日韩91久久久久久| 国产一区二区三区精品视频| 欧美bbbbb| 日韩和欧美一区二区| 亚洲已满18点击进入久久| 亚洲欧美一区二区三区国产精品| 欧美日韩国产小视频| 91性感美女视频| 国产传媒一区在线| 国产一区二区精品久久| 久久草av在线| 久久av资源网| 久久激情五月激情| 久久99久久久久| 麻豆精品视频在线观看免费| 蜜桃精品视频在线观看| 久久综合综合久久综合| 卡一卡二国产精品|