void CALLBACK StartupTimerProc(HWND hwnd, UINT msg, UINT timer, DWORD dwTime) { /* See if we've timed out */ timeout += BEACON_INTERVAL; debug(("In timer proc\n")); if (timeout >= BEACON_TIMEOUT) { Logoff(); ClientError(hInst, hMain, IDS_CONNECTERROR); return; } /* Spew at server again */ WriteServer((char *) client_string1, INITSTR_LENGTH); }
/* * StartupInit: Send startup string, and wait for string from server. * final_state is the state we should end up in if the resynchronization succeeds. * This should be STATE_LOGIN if we are just connecting to the server or if we * try to resync in login mode, and STATE_GAME if we are trying to resync in game mode. */ void StartupInit(int final_state) { dest_state = final_state; pos = 0; timeout = 0; /* Set timer to keep writing initial string to server */ WriteServer((char *) client_string1, INITSTR_LENGTH); timer_id = SetTimer(NULL, 0, BEACON_INTERVAL, StartupTimerProc); if (timer_id == 0) { ClientError(hInst, hMain, IDS_NOTIMERS); return; } }
int IOWrite( int writehandle, char *buff, int buff_len ) { my_file *p; int index; int written; // if( !MayRelinquishControl ) return( -1 ); index = writehandle - FIRST_HANDLE; if( index < 0 || index >= NUM_FILES || Files[ index ].file_type != FILE_SERVER ) { BadFile(); } p = &Files[ index ]; written = WriteServer( p->handle, p->seekpos, buff, buff_len ); if( written != buff_len ) { written = ErrorCode(); } return( written ); }
/* * AddCharsStartup: We got some stuff from the server; see what it is. */ void AddCharsStartup(char *message, int len) { int i; Bool done = False; for (i=0; i < len; i++) { /* If character doesn't match code, start over */ if (server_string[pos] != (unsigned char) message[i]) { pos = 0; continue; } pos++; /* If we reach end of server string, win */ if (pos == INITSTR_LENGTH) { done = True; break; } } if (!done) return; debug(("Got response from server\n")); /* We found server's code string. Send response and go into correct mode. */ AbortStartupTimer(); WriteServer((char *) client_string2, INITSTR_LENGTH); switch (dest_state) { case STATE_LOGIN: MainSetState(STATE_LOGIN); break; case STATE_GAME: /* We're already in game state, so don't do MainSetState--just get new game data */ ResetUserData(); break; } }
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); }