Code/Resource
Windows Develop
Linux-Unix program
Internet-Socket-Network
Web Server
Browser Client
Ftp Server
Ftp Client
Browser Plugins
Proxy Server
Email Server
Email Client
WEB Mail
Firewall-Security
Telnet Server
Telnet Client
ICQ-IM-Chat
Search Engine
Sniffer Package capture
Remote Control
xml-soap-webservice
P2P
WEB(ASP,PHP,...)
TCP/IP Stack
SNMP
Grid Computing
SilverLight
DNS
Cluster Service
Network Security
Communication-Mobile
Game Program
Editor
Multimedia program
Graph program
Compiler program
Compress-Decompress algrithms
Crypt_Decrypt algrithms
Mathimatics-Numerical algorithms
MultiLanguage
Disk/Storage
Java Develop
assembly language
Applications
Other systems
Database system
Embeded-SCM Develop
FlashMX/Flex
source in ebook
Delphi VCL
OS Develop
MiddleWare
MPI
MacOS develop
LabView
ELanguage
Software/Tools
E-Books
Artical/Document
lock.c
Package: saac.tar.gz [view]
Upload User: qys8201
Upload Date: 2021-12-11
Package Size: 978k
Code Size: 4k
Category:
Game Server Simulator
Development Platform:
C/C++
- #include <stdio.h>
- #include <stdlib.h>
- #include "lock.h"
- #include "main.h"
- #include "char.h"
- LockNode **userlock;
- void Lock_Init(void)
- {
- int i;
- userlock= (LockNode **) calloc( 1, sizeof(LockNode *) * 256);
- memset(userlock, 0, sizeof(userlock));
- for (i=0; i<256; i++) {
- userlock[i] = (LockNode *)calloc( 1,sizeof(LockNode));
- userlock[i]->use=0;
- userlock[i]->next=NULL;
- userlock[i]->prev=NULL;
- memset( userlock[i]->cdkey, 0, sizeof( userlock[i]->cdkey) );
- memset( userlock[i]->server, 0, sizeof( userlock[i]->server) );
- #ifdef _LOCK_ADD_NAME
- memset( userlock[i]->name, 0, sizeof( userlock[i]->name) );
- #endif
- }
- log("存贮器初始化");
- }
- LockNode *Creat_newNodes( void)
- {
- LockNode *newln=NULL;
- newln = ( LockNode *)calloc( 1, sizeof( LockNode) );
- if( newln == NULL ){
- log( "err Can't calloc:%d lock nodes !!n", sizeof(LockNode));
- return 0;
- }
- newln->use=0;
- newln->next=NULL;
- memset( newln->cdkey, 0, sizeof( newln->cdkey) );
- memset( newln->server, 0, sizeof( newln->server) );
- #ifdef _LOCK_ADD_NAME
- memset( newln->name, 0, sizeof( newln->name) );
- #endif
- return newln;
- }
- #ifdef _LOCK_ADD_NAME
- int InsertMemLock(int entry, char *cdkey,char *name, char *passwd, char *server, int process, char *deadline)
- #else
- int InsertMemLock(int entry, char *cdkey, char *passwd, char *server, int process, char *deadline)
- #endif
- {
- int j;
- LockNode *ln = userlock[entry];
- #ifdef _LOCK_ADD_NAME
- log("进入游戏:目录:char/0x%x 账号:%s 名称:%s 服务器:%sn", entry, cdkey, name, server);
- #else
- log("进入游戏:目录:%x 账号:%s 服务器:%sn", entry, cdkey, server);
- #endif
- while( (ln!=NULL) && (ln->use!=0)) ln=ln->next;
- if( ln == NULL ) {
- LockNode *fhead=NULL;
- LockNode *p = userlock[entry];
- log("Add more lock nodes.n");
- while (p->next!=NULL) p=p->next;
- fhead = p;
- for( j=0; j<32; j++) { // allocate more nodes
- if( (ln = Creat_newNodes() ) == NULL ) return 0;
- ln->prev=p;
- p->next=ln;
- p=ln;
- }
- while( (fhead!=NULL) && (fhead->use!=0)) fhead=fhead->next;
- ln = fhead;
- }
- if( ln->use !=0 ) return 0;
- ln->use = 1;
- strcpy( ln->cdkey, cdkey);
- strcpy( ln->server, server);
- #ifdef _LOCK_ADD_NAME
- strcpy( ln->name, name);
- #endif
- ln->process = process;
- return 1;
- }
- int DeleteMemLock(int entry, char *cdkey, int *process)
- {
- LockNode *ln = userlock[entry];
- log("删除内存信息 位置=%x 账号=%s ..", entry, cdkey);
- while (ln!=NULL) {
- if( ln->use != 0) {
- if( strcmp( ln->cdkey, cdkey ) == 0 ) break;
- }
- ln=ln->next;
- }
- if( ln != NULL ) {
- ln->use=0;
- memset( ln->cdkey, 0, sizeof( ln->cdkey) );
- memset( ln->server, 0, sizeof( ln->server) );
- #ifdef _LOCK_ADD_NAME
- memset( ln->name, 0, sizeof( ln->name) );
- #endif
- *process = ln->process;
- log("删除成功n");
- return 1;
- }
- log("删除失败!!n");
- return 0;
- }
- void DeleteMemLockServer(char *sname)
- {
- int i;
- LockNode *ln;
- for (i=0; i<256; i++) {
- ln = userlock[i];
- while (ln!=NULL) {
- if (ln->use != 0) {
- if( strcmp( ln->server, sname)==0) {
- ln->use=0;
- }
- }
- ln=ln->next;
- }
- }
- }
- int isMemLocked(int entry, char *cdkey)
- {
- LockNode *ln = userlock[entry];
- while (ln!=NULL) {
- if (ln->use != 0) {
- if (strcmp(ln->cdkey, cdkey)==0) {
- if( !strcmp(ln->server, "星系移民"))
- log(" 星系移民中 ");
- break;
- }
- }
- ln=ln->next;
- }
- if (ln!=NULL) return 1; else return 0;
- }
- int GetMemLockState(int entry, char *cdkey, char *result)
- {
- LockNode *ln = userlock[entry];
- while (ln!=NULL) {
- if (ln->use != 0) {
- if (strcmp(ln->cdkey, cdkey)==0) {
- sprintf(result, "%s 是在 %s 被锁的.",cdkey, ln->server);
- return 1;
- }
- }
- ln=ln->next;
- }
- sprintf(result, "%s 没有被锁.", cdkey);
- return 0;
- }
- int GetMemLockServer(int entry, char *cdkey, char *result)
- {
- LockNode *ln = userlock[entry];
- while (ln!=NULL) {
- if (ln->use != 0) {
- if (strcmp(ln->cdkey, cdkey)==0) {
- strcpy(result, ln->server);
- return 1;
- }
- }
- ln=ln->next;
- }
- return 0;
- }
- int LockNode_getGname( int entries, char *id, char *gname)
- {
- LockNode *ln = userlock[entries];
- while (ln!=NULL) {
- if (ln->use != 0) {
- if( !strcmp(ln->cdkey, id) ){
- sprintf( gname,"%s", ln->server );
- return 1;
- }
- }
- ln=ln->next;
- }
- return 0;
- }