Пример #1
0
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;
}
Пример #2
0
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;
}
Пример #3
0
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);
}
Пример #4
0
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;
	}
}
Пример #5
0
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;
}