static void Slist_Poll(void) { int i; for (i = 0; i < net_numdrivers; i++) { net_driver = &net_drivers[i]; /* Only list the loop driver if slistLocal is true */ if (!slistLocal && IS_LOOP_DRIVER(net_driver)) continue; if (net_driver->initialized == false) continue; net_driver->SearchForHosts(false); } if (!slistSilent) PrintSlist(); if ((Sys_DoubleTime() - slistStartTime) < 1.5) { SchedulePollProcedure(&slistPollProcedure, 0.1); return; } if (!slistSilent) PrintSlistTrailer(); slistInProgress = false; slistSilent = false; slistLocal = true; }
static void Slist_Poll(void) { for (net_driverlevel=0; net_driverlevel < net_numdrivers; net_driverlevel++) { if (!slistLocal && net_driverlevel == 0) continue; if (net_drivers[net_driverlevel].initialized == false) continue; dfunc.SearchForHosts (false); } if (! slistSilent) PrintSlist(); if ((Sys_FloatTime() - slistStartTime) < 1.5) { SchedulePollProcedure(&slistPollProcedure, 0.1); return; } if (! slistSilent) PrintSlistTrailer(); slistInProgress = false; slistSilent = false; slistLocal = true; }
static void Modem_Hangup2(ComPort *p) { outportb(p->uart + MODEM_CONTROL_REGISTER, inportb(p->uart + MODEM_CONTROL_REGISTER) | MCR_DTR); Modem_Command(p, "+++"); p->poll.procedure = Modem_Hangup3; SchedulePollProcedure(&p->poll, 1.5); }
static void Test2_f(void) { char *host; int n; struct qsockaddr sendaddr; if (test2InProgress) { return; } host = Cmd_Argv(1); if (host && hostCacheCount) { for (n = 0; n < hostCacheCount; n++) if (Q_strcasecmp(host, hostcache[n].name) == 0) { if (hostcache[n].driver != myDriverLevel) { continue; } net_landriverlevel = hostcache[n].ldriver; Q_memcpy(&sendaddr, &hostcache[n].addr, sizeof(struct qsockaddr)); break; } if (n < hostCacheCount) { goto JustDoIt; } } for (net_landriverlevel = 0; net_landriverlevel < net_numlandrivers; net_landriverlevel++) { if (!net_landrivers[net_landriverlevel].initialized) { continue; } // see if we can resolve the host name if (dfunc.GetAddrFromName(host, &sendaddr) != -1) { break; } } if (net_landriverlevel == net_numlandrivers) { return; } JustDoIt: test2Socket = dfunc.OpenSocket(0); if (test2Socket == -1) { return; } test2InProgress = true; test2Driver = net_landriverlevel; SZ_Clear(&net_message); // save space for the header, filled in later MSG_WriteLong(&net_message, 0); MSG_WriteByte(&net_message, CCREQ_RULE_INFO); MSG_WriteString(&net_message, ""); *((int *)net_message.data) = BigLong(NETFLAG_CTL | (net_message.cursize & NETFLAG_LENGTH_MASK)); dfunc.Write(test2Socket, net_message.data, net_message.cursize, &sendaddr); SZ_Clear(&net_message); SchedulePollProcedure(&test2PollProcedure, 0.05); }
static void Test2_Poll(void) { struct qsockaddr clientaddr; int control; int len; char name[256]; char value[256]; net_landriverlevel = test2Driver; name[0] = 0; len = dfunc.Read (test2Socket, net_message.data, net_message.maxsize, &clientaddr); if (len < sizeof(int)) goto Reschedule; net_message.cursize = len; MSG_BeginReading (); control = BigLong(*((int *)net_message.data)); MSG_ReadLong(); if (control == -1) goto Error; if ((control & (~NETFLAG_LENGTH_MASK)) != NETFLAG_CTL) goto Error; if ((control & NETFLAG_LENGTH_MASK) != len) goto Error; if (MSG_ReadByte() != CCREP_RULE_INFO) goto Error; Q_strcpy(name, MSG_ReadString()); if (name[0] == 0) goto Done; Q_strcpy(value, MSG_ReadString()); Con_Printf("%-16.16s %-16.16s\n", name, value); SZ_Clear(&net_message); // save space for the header, filled in later MSG_WriteLong(&net_message, 0); MSG_WriteByte(&net_message, CCREQ_RULE_INFO); MSG_WriteString(&net_message, name); *((int *)net_message.data) = BigLong(NETFLAG_CTL | (net_message.cursize & NETFLAG_LENGTH_MASK)); dfunc.Write (test2Socket, net_message.data, net_message.cursize, &clientaddr); SZ_Clear(&net_message); Reschedule: SchedulePollProcedure(&test2PollProcedure, 0.05); return; Error: Con_Printf("Unexpected repsonse to Rule Info request\n"); Done: dfunc.CloseSocket(test2Socket); test2InProgress = false; return; }
static void Test_Poll(void) { struct qsockaddr clientaddr; int control; int len; char name[32]; char address[64]; int colors; int frags; int connectTime; byte playerNumber; net_landriverlevel = testDriver; while (1) { len = dfunc.Read(testSocket, net_message.data, net_message.maxsize, &clientaddr); if (len < sizeof(int)) { break; } net_message.cursize = len; MSG_BeginReading(); control = BigLong(*((int *)net_message.data)); MSG_ReadLong(); if (control == -1) { break; } if ((control & (~NETFLAG_LENGTH_MASK)) != NETFLAG_CTL) { break; } if ((control & NETFLAG_LENGTH_MASK) != len) { break; } if (MSG_ReadByte() != CCREP_PLAYER_INFO) { Sys_Error("Unexpected repsonse to Player Info request\n"); } playerNumber = MSG_ReadByte(); Q_strcpy(name, MSG_ReadString()); colors = MSG_ReadLong(); frags = MSG_ReadLong(); connectTime = MSG_ReadLong(); Q_strcpy(address, MSG_ReadString()); Con_Printf("%s\n frags:%3i colors:%u %u time:%u\n %s\n", name, frags, colors >> 4, colors & 0x0f, connectTime / 60, address); } testPollCount--; if (testPollCount) { SchedulePollProcedure(&testPollProcedure, 0.1); } else { dfunc.CloseSocket(testSocket); testInProgress = false; } }
void NET_Slist_f (void) { if (slistInProgress) return; if (! slistSilent) { Con_Printf("Looking for Hexen II servers...\n"); PrintSlistHeader(); } slistInProgress = true; slistStartTime = Sys_FloatTime(); SchedulePollProcedure(&slistSendProcedure, 0.0); SchedulePollProcedure(&slistPollProcedure, 0.1); hostCacheCount = 0; }
void NET_Slist_f (void) { if (slistInProgress) return; if (! slistSilent) { Con_Printf("Looking for Quake servers...\n"); PrintSlistHeader(); } slistInProgress = TRUE; slistStartTime = System_DoubleTime(); SchedulePollProcedure(&slistSendProcedure, 0.0); SchedulePollProcedure(&slistPollProcedure, 0.1); hostCacheCount = 0; }
static void Modem_Hangup(ComPort *p) { Con_Printf("Hanging up modem...\n"); disable(); p->modemRang = false; p->outputQueue.head = p->outputQueue.tail = 0; p->inputQueue.head = p->inputQueue.tail = 0; outportb(p->uart + MODEM_CONTROL_REGISTER, inportb(p->uart + MODEM_CONTROL_REGISTER) & ~MCR_DTR); enable(); p->poll.procedure = Modem_Hangup2; p->poll.arg = p; SchedulePollProcedure(&p->poll, 1.5); }
static void Slist_Send(void) { for (net_driverlevel=0; net_driverlevel < net_numdrivers; net_driverlevel++) { if (!slistLocal && net_driverlevel == 0) continue; if (net_drivers[net_driverlevel].initialized == false) continue; dfunc.SearchForHosts (true); } if ((Sys_FloatTime() - slistStartTime) < 0.5) SchedulePollProcedure(&slistSendProcedure, 0.75); }
static void Slist_Send(void) { int i; for (i = 0; i < net_numdrivers; i++) { net_driver = &net_drivers[i]; /* Only list the loop driver if slistLocal is true */ if (!slistLocal && IS_LOOP_DRIVER(net_driver)) continue; if (net_driver->initialized == false) continue; net_driver->SearchForHosts(true); } if ((Sys_DoubleTime() - slistStartTime) < 0.5) SchedulePollProcedure(&slistSendProcedure, 0.75); }
static void Test_f (void) { char *host; int n; int max = MAX_SCOREBOARD; struct qsockaddr sendaddr; if (testInProgress) return; host = Cmd_Argv (1); if (host && hostCacheCount) { for (n = 0; n < hostCacheCount; n++) if (Q_strcasecmp (host, hostcache[n].name) == 0) { if (hostcache[n].driver != myDriverLevel) continue; net_landriverlevel = hostcache[n].ldriver; max = hostcache[n].maxusers; Q_memcpy(&sendaddr, &hostcache[n].addr, sizeof(struct qsockaddr)); break; } if (n < hostCacheCount) goto JustDoIt; } for (net_landriverlevel = 0; net_landriverlevel < net_numlandrivers; net_landriverlevel++) { if (!net_landrivers[net_landriverlevel].initialized) continue; // see if we can resolve the host name if (dfunc.GetAddrFromName(host, &sendaddr) != -1) break; } if (net_landriverlevel == net_numlandrivers) return; JustDoIt: testSocket = dfunc.OpenSocket(0); if (testSocket == -1) return; testInProgress = true; testPollCount = 20; testDriver = net_landriverlevel; for (n = 0; n < max; n++) { SZ_Clear(&net_message); // save space for the header, filled in later MSG_WriteLong(&net_message, 0); MSG_WriteByte(&net_message, CCREQ_PLAYER_INFO); MSG_WriteByte(&net_message, n); *((int *)net_message.data) = BigLong(NETFLAG_CTL | (net_message.cursize & NETFLAG_LENGTH_MASK)); dfunc.Write (testSocket, net_message.data, net_message.cursize, &sendaddr); } SZ_Clear(&net_message); SchedulePollProcedure(&testPollProcedure, 0.1); }
static void Modem_Hangup3(ComPort *p) { Modem_Command(p, p->shutdown); p->poll.procedure = Modem_Hangup4; SchedulePollProcedure(&p->poll, 1.5); }