FskErr KprDebugMachineNew(KprDebugMachine* it, KprDebug debug, FskSocket skt) { FskErr err = kFskErrNone; KprDebugMachine self = NULL; UInt32 ip; int port; BAIL_IF_ERR(err = FskMemPtrNewClear(sizeof(KprDebugMachineRecord), it)); self = *it; self->debug = debug; self->socket = skt; BAIL_IF_ERR(err = FskNetSocketGetRemoteAddress(skt, &ip, &port)); FskNetIPandPortToString(ip, port, self->address); FskListAppend(&self->debug->machine, self); FskNetSocketReceiveBufferSetSize(self->socket, kSocketBufferSize); FskThreadAddDataHandler(&self->reader, (FskThreadDataSource)self->socket, KprDebugMachineDataReader, true, false, self); bailIfError(KprSocketWriterNew(&self->writer, self->socket, self)); self->writer->errorCallback = KprDebugMachineWriteError; KprDebugMachineCallbackText(self, "onMachineRegistered", mxNoCommand, NULL); FskInstrumentedItemNew(self, NULL, &KprDebugMachineInstrumentation); return err; bail: KprDebugMachineDispose(self); return err; }
static FskErr KprSocketNewFromFskSocket(FskSocket skt, KprSocketFlags flags, KprSocket *it) { FskErr err = kFskErrNone; KprSocket self = NULL; UInt32 ipaddr; char ipaddrStr[22]; bailIfError(FskMemPtrNewClear(sizeof(KprSocketRecord), &self)); bailIfError(FskNetSocketGetLocalAddress(skt, &ipaddr, &self->port)); FskNetIPandPortToString(ipaddr, 0, ipaddrStr); self->host = FskStrDoCopy(ipaddrStr); bailIfNULL(self->host); self->mode = kKprSocketModeTCP; self->proto = kKprSocketProtoTCP; self->secure = (Boolean)(flags & kKprSocketFlagsSecure); bailIfError(KprSocketOnConnect(skt, self)); *it = self; FskListAppend(&gSockets, self); bail: if (err) { KprSocketDispose(self); } return err; }
void KprNetworkInterfaceRemove(int ip) { char ipString[16]; char buffer[64]; KprMessage message = NULL; FskNetIPandPortToString(ip, 0, ipString); FskDebugStr("ADD INTERFACE %s", ipString); sprintf(buffer, "xkpr:///network/interface/remove?ip=%s", ipString); KprMessageNew(&message, buffer); if (message) KprMessageNotify(message); }
void printInterfaces() { FskNetInterfaceRecord *nir; char str[32], mac[32]; nir = gNetworkInterfaces; while (nir) { FskNetIPandPortToString(nir->ip, 0, str); FskStrNumToHex(nir->MAC[0], mac, 2); mac[2] = ':'; FskStrNumToHex(nir->MAC[1], &mac[3], 2); mac[5] = ':'; FskStrNumToHex(nir->MAC[2], &mac[6], 2); mac[8] = ':'; FskStrNumToHex(nir->MAC[3], &mac[9], 2); mac[11] = ':'; FskStrNumToHex(nir->MAC[4], &mac[12], 2); mac[14] = ':'; FskStrNumToHex(nir->MAC[5], &mac[15], 2); mac[17] = '\0'; FskInstrumentedTypePrintfDebug(&gNetInterfaceNotifierTypeInstrumentation, "IFC: %s -- %s -- %s", nir->name, str, mac); nir = nir->next; } }
static Boolean doFormatMessageHTTPServer(FskInstrumentedType dispatch, UInt32 msg, void *msgData, char *buffer, UInt32 bufferSize) { FskHTTPServerListener listener = (FskHTTPServerListener)msgData; FskHTTPServerRequest request = (FskHTTPServerRequest)msgData; FskHTTPServer http = (FskHTTPServer)msgData; FskHTTPInstrMsgDataRecord *data = (FskHTTPInstrMsgDataRecord*)msgData; FskThread thread; char tmp[64]; UInt32 s; const UInt32 kMessageTextSize = 512; switch (msg) { case kFskHTTPInstrMsgRequestState: thread = FskThreadGetCurrent(); if (request->http->owner != thread) snprintf(buffer, bufferSize, "RUNNING IN (%p:%s) SHOULD BE (%p:%s) %s - %s", thread, thread->name, request->http->owner, request->http->owner->name, request->http->name, httpserverstate2str(request->state)); else snprintf(buffer, bufferSize, "%s - %s", request->http->name, httpserverstate2str(request->state)); return true; case kFskHTTPInstrMsgErrString: snprintf(buffer, bufferSize, "%s", (char*)msgData); return true; case kFskHTTPInstrMsgNowListening: snprintf(buffer, bufferSize, "listening to %s:%d", listener->ifcName, listener->port); return true; case kFskHTTPInstrMsgFailedListener: snprintf(buffer, bufferSize, "no longer listening to %s", listener->http->name); return true; case kFskHTTPInstrMsgConnectionRefusedStopped: snprintf(buffer, bufferSize, "refused connection - server stopped %s", listener->http->name); return true; case kFskHTTPInstrMsgServerStart: snprintf(buffer, bufferSize, "%s starting", http->name); return true; case kFskHTTPInstrMsgServerStartedAlready: snprintf(buffer, bufferSize, "%s already started", http->name); return true; case kFskHTTPInstrMsgServerStop: snprintf(buffer, bufferSize, "%s stopping", http->name); return true; case kFskHTTPInstrMsgServerStoppedAlready: snprintf(buffer, bufferSize, "%s already stopped", http->name); return true; case kFskHTTPInstrMsgRequestKillIdle: FskNetIPandPortToString(request->requesterAddress, request->requesterPort, tmp); snprintf(buffer, bufferSize, "%s - killing idle request connection from %s", request->http->name, tmp); return true; case kFskHTTPInstrMsgRequestRemainsOnClose: FskNetIPandPortToString(request->requesterAddress, request->requesterPort, tmp); snprintf(buffer, bufferSize, "closing %s - killing request from %s", request->http->name, tmp); return true; case kFskHTTPInstrMsgRequestRecvData: case kFskHTTPInstrMsgRequestSendData: s = data->amt -1; if ((s + kMessageTextSize) > bufferSize) s = bufferSize - kMessageTextSize; tmp[0] = data->buffer[s]; data->buffer[s] = '\0'; if (msg == kFskHTTPInstrMsgRequestSendData) snprintf(buffer, bufferSize, "send data (%u bytes): %s%c", (unsigned)data->amt, data->buffer, tmp[0]); else snprintf(buffer, bufferSize, "recv data (%u bytes): %s%c", (unsigned)data->amt, data->buffer, tmp[0]); data->buffer[s] = tmp[0]; return true; default: return false; } return false; }