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

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

?? server.c

?? 嵌入式數據庫Berkeley DB-4.5.20源代碼
?? 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);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产黄色精品视频| 成人性生交大片免费看在线播放| 久久久99免费| 欧美日韩精品一区二区三区 | 欧美一区二区三区免费在线看| 国产成人啪免费观看软件| 亚洲大型综合色站| 亚洲人快播电影网| 欧美国产日韩一二三区| 日韩免费观看高清完整版| 欧洲中文字幕精品| 99久久精品国产一区| 国产精品综合久久| 美腿丝袜亚洲综合| 日韩激情在线观看| 夜夜嗨av一区二区三区| 国产精品丝袜黑色高跟| 久久久91精品国产一区二区三区| 69久久99精品久久久久婷婷| 色婷婷精品久久二区二区蜜臀av| 成人网男人的天堂| 国产精品99久久久久| 久久精品久久精品| 日本伊人色综合网| 午夜婷婷国产麻豆精品| 亚洲一区二区在线免费看| 亚洲天堂2016| 亚洲免费资源在线播放| 亚洲人亚洲人成电影网站色| 国产精品久久久久久久久搜平片 | 欧美精品一区二区三区蜜臀| 日韩三级.com| 精品久久久久久无| 日韩精品一区二区三区视频| 91精品久久久久久蜜臀| 欧美一区二区视频在线观看2022| 欧美精品第一页| 欧美日韩国产高清一区二区三区| 欧美三级电影在线看| 欧美日韩视频在线观看一区二区三区| 91久久奴性调教| 在线观看视频一区| 欧美色涩在线第一页| 欧美精品日韩一本| 日韩免费在线观看| 国产网站一区二区| 国产精品高潮呻吟久久| 亚洲乱码中文字幕综合| 亚洲国产日产av| 亚洲成人精品一区二区| 麻豆精品视频在线观看视频| 精品制服美女久久| 成人午夜私人影院| 在线观看av一区二区| 欧美美女一区二区在线观看| 欧美精品一二三四| 久久亚洲影视婷婷| 亚洲欧洲成人精品av97| 亚洲国产aⅴ天堂久久| 蜜乳av一区二区| 成人免费福利片| 欧美视频三区在线播放| 日韩亚洲欧美成人一区| 国产欧美日韩不卡免费| 一区二区三区 在线观看视频| 水野朝阳av一区二区三区| 久久99精品视频| 99国产欧美久久久精品| 666欧美在线视频| 国产欧美综合在线观看第十页 | 精品中文字幕一区二区| 东方欧美亚洲色图在线| 欧美影院精品一区| 精品成人免费观看| 亚洲激情五月婷婷| 国内精品视频一区二区三区八戒| 成人午夜大片免费观看| 欧美吻胸吃奶大尺度电影| xnxx国产精品| 一区二区三区加勒比av| 捆绑紧缚一区二区三区视频| av一本久道久久综合久久鬼色| 欧美日韩一区二区三区四区| 国产欧美视频在线观看| 午夜精品福利久久久| 高清不卡在线观看av| 欧美日韩精品免费观看视频| 欧美经典一区二区| 午夜a成v人精品| 高清成人免费视频| 欧美一卡二卡在线观看| 亚洲欧美另类小说视频| 韩国av一区二区三区四区| 色欧美乱欧美15图片| 久久九九影视网| 亚洲成av人片一区二区| 欧美性感一类影片在线播放| 久久中文字幕电影| 丝袜美腿一区二区三区| 91视频观看免费| 久久久九九九九| 美女一区二区三区在线观看| 91极品视觉盛宴| 国产欧美va欧美不卡在线| 麻豆传媒一区二区三区| 欧美日韩精品三区| 夜夜爽夜夜爽精品视频| 99久久免费国产| 久久精品综合网| 在线观看视频91| **欧美大码日韩| 国产高清精品网站| 欧美xfplay| 视频精品一区二区| 欧美在线不卡一区| 亚洲色图19p| 成人a级免费电影| 久久久久久一二三区| 精品制服美女久久| 日韩区在线观看| 免费成人结看片| 欧美一区二区成人| 丝袜亚洲精品中文字幕一区| 欧美性猛交xxxx乱大交退制版| 亚洲欧美另类久久久精品| av电影一区二区| 国产欧美日韩不卡| 国产成人在线观看免费网站| 日韩美女视频在线| 蜜臀av性久久久久av蜜臀妖精| 欧美日韩国产影片| 偷拍一区二区三区四区| 8v天堂国产在线一区二区| 日一区二区三区| 日韩一区二区高清| 久久99久久99| 久久美女艺术照精彩视频福利播放 | 国产精品不卡一区| www.亚洲色图.com| 亚洲欧洲av在线| 在线视频综合导航| 亚洲成人午夜电影| 91精品国模一区二区三区| 日韩有码一区二区三区| 欧美色视频在线观看| 日韩av高清在线观看| 日韩精品在线看片z| 韩国成人在线视频| 久久精品一级爱片| 成人激情图片网| 一区二区三区中文字幕| 欧美日韩国产在线播放网站| 男人操女人的视频在线观看欧美| 日韩精品一区二区三区视频在线观看| 激情丁香综合五月| 中文字幕第一区第二区| 91福利资源站| 91丨porny丨国产| 亚洲国产精品久久不卡毛片| 欧美一级理论片| 国产精品自拍三区| 亚洲欧洲精品一区二区三区不卡| 欧美色图激情小说| 狠狠色狠狠色合久久伊人| 久久久91精品国产一区二区精品| 91蝌蚪国产九色| 性做久久久久久免费观看欧美| 欧美mv日韩mv亚洲| 99精品视频在线播放观看| 亚洲亚洲人成综合网络| 欧美大片一区二区| 成人高清伦理免费影院在线观看| 亚洲精品成人精品456| 日韩欧美成人午夜| 91丨九色porny丨蝌蚪| 欧美a级理论片| 中文字幕一区在线| 欧美精品xxxxbbbb| 成人黄动漫网站免费app| 亚洲国产精品欧美一二99| www国产成人免费观看视频 深夜成人网 | 国产午夜精品久久| 国产精品国产三级国产a| 风间由美性色一区二区三区| 一区二区三区中文字幕| 精品乱人伦小说| 国产一区不卡在线| 亚洲夂夂婷婷色拍ww47| 国产香蕉久久精品综合网| 欧美一级夜夜爽| 国产成人综合亚洲网站| 国产日韩欧美a| 91精品国产91久久久久久一区二区| 国产精品一级在线| 亚洲一区二区美女| 中文字幕欧美国产| 欧美xxxxxxxx| 欧美美女黄视频| 91在线精品一区二区| 久久91精品久久久久久秒播|