Exemple #1
0
void
main(int argc, char **argv)
{
    FILE *uheader, *server, *user;
    FILE *iheader, *sheader;

    set_program_name("mig");
    parseArgs(argc, argv);
    init_global();
    init_type();

    LookNormal();
    (void) yyparse();

    if (errors > 0)
	exit(1);

    more_global();

    uheader = myfopen(UserHeaderFileName, "w");
    if (!UserFilePrefix)
	user = myfopen(UserFileName, "w");
    server = myfopen(ServerFileName, "w");
    if (ServerHeaderFileName)
	sheader = myfopen(ServerHeaderFileName, "w");
    if (IsKernelServer)
    {
	iheader = myfopen(InternalHeaderFileName, "w");
    }

    if (BeVerbose)
    {
	printf("Writing %s ... ", UserHeaderFileName);
	fflush(stdout);
    }
    WriteUserHeader(uheader, StatementList);
    fclose(uheader);
    if (ServerHeaderFileName)
    {
	if (BeVerbose)
	{
	    printf ("done.\nWriting %s ...", ServerHeaderFileName);
	    fflush (stdout);
	}
	WriteServerHeader(sheader, StatementList);
	fclose(sheader);
    }
    if (IsKernelServer)
    {
	if (BeVerbose)
	{
	    printf("done.\nWriting %s ... ", InternalHeaderFileName);
	    fflush(stdout);
	}
	WriteInternalHeader(iheader, StatementList);
	fclose(iheader);
    }
    if (UserFilePrefix)
    {
	if (BeVerbose)
	{
	    printf("done.\nWriting individual user files ... ");
	    fflush(stdout);
	}
	WriteUserIndividual(StatementList);
    }
    else
    {
	if (BeVerbose)
	{
	    printf("done.\nWriting %s ... ", UserFileName);
	    fflush(stdout);
	}
	WriteUser(user, StatementList);
	fclose(user);
    }
    if (BeVerbose)
    {
	printf("done.\nWriting %s ... ", ServerFileName);
	fflush(stdout);
    }
    WriteServer(server, StatementList);
    fclose(server);
    if (BeVerbose)
	printf("done.\n");

    exit(0);
}
Exemple #2
0
void udp_recv_process(int udpsock)
{
	char	ubuf[2500], *pn = ubuf;
	char	sbuf[2500];
	struct	sockaddr_in clnt_addr;
	UINT	clilen = sizeof(clnt_addr);
	
	int	rlen = recvfrom(udpsock,(void *)ubuf,2048,0,(struct sockaddr *)&clnt_addr, &clilen);
	if(rlen <= 0)  return;
	ubuf[rlen] = 0;

_LOGFILE("\n <++++++%s: udp_recv_process(%dbyte): \"%s\"\n",strHHMMSS(g_Now), rlen, ubuf);

	string srcId   = GetToken(pn,SEPARATOR,pn);
	string dstId   = GetToken(pn,SEPARATOR,pn);

strcpy(sbuf,pn);				//  보내기위해 저장..

	string command = GetToken(pn,SEPARATOR,pn);
	string key     = GetToken(pn,SEPARATOR,pn);
	string data    = GetToken(pn,SEPARATOR,pn);


	_LOGFILE_NONUM("고객수: %d\t====> %s\n",g_PosMap.size(),ubuf);


	Z_POS *pPos, *pDstPos;

	

	if((pPos=GetMember(g_PosMap,srcId)) == NULL) {
		pPos = new Z_POS;

		pPos->udpsock = udpsock;

		char	peer_ip[20];
		inet_ntop(AF_INET,&clnt_addr.sin_addr,peer_ip,sizeof(peer_ip));
		pPos->peer_ip = peer_ip;

		pPos->peerport   = ntohs(clnt_addr.sin_port);
		memcpy((char*)&pPos->clnt_addr,(char*)&clnt_addr, clilen);

		pPos->user_id = srcId;
	}

	g_PosMap[pPos->user_id] = pPos;
	WriteUser(pPos->user_id, pPos->clnt_addr);



_LOGFILE("\n srcId='%s'\n",srcId.c_str());
_LOGFILE("\n dstId='%s'\n",dstId.c_str());
_LOGFILE("\n command='%s'\n",command.c_str());

	if(dstId.length() == 0 || dstId == "0")	{
		udp_send_process(pPos, sbuf);	sleep(1);
		udp_send_process(pPos, sbuf);
		return;
	}	
		
	if((pDstPos=GetMember(g_PosMap,dstId)) == NULL) { pDstPos = new Z_POS; }

//	dbSelect_Position(pPos);
//	dbSelect_Position(pDstPos);
	
	pDstPos = GetMember(g_PosMap,dstId);



//	pPos->LOGGING();



	if(command == "ROOM")	{ }
	if(command == "READY")	{ }
	if(command == "GAME")	{ }


	udp_send_process(pDstPos, sbuf);
}