Example #1
0
	void UdpSendThread::Main() {
		SocketThreadOperation *op = mSocketThreadOperation;
		UdpSocket *s = (UdpSocket*)op->mSocket;
		ErrorType error;
		StopWatch sw;
		sw.Start();
		while (!ShouldEnd()) {
			error = s->Send(op->mIPAddress, op->mByteStream, Math::ClampLong(
				op->mTimeoutMS - sw.GetElapsedMilliseconds(), 0L, 16L));
			if (0L == op->mTimeoutMS ||
				(error && kErrorTimedOut != error) ||
				(0L < op->mTimeoutMS &&
				sw.GetElapsedMilliseconds() >= op->mTimeoutMS))
			{
				if (error)
					Error::Throw(error, String("[%s(%p, %p)]",
						FastFunctionName, this, op));
				s->OnSend(op->mID, op->mIPAddress, error);
				break;
			}
		}
	}
Example #2
0
File: api.cpp Project: datee/hxudp
value _UdpSocket_Send(value a, value b, value c) {
	UdpSocket* s = (UdpSocket*) val_data(a);
	return alloc_int(s->Send(buffer_data(val_to_buffer(b)), val_int(c)));
}