in src/client/src/InputValidator.c [16:113]
STATUS validateClientCallbacks(PDeviceInfo pDeviceInfo, PClientCallbacks pClientCallbacks)
{
STATUS retStatus = STATUS_SUCCESS;
CHK(pClientCallbacks != NULL && pDeviceInfo != NULL, STATUS_NULL_ARG);
CHK(pClientCallbacks->version <= CALLBACKS_CURRENT_VERSION, STATUS_INVALID_CALLBACKS_VERSION);
// Most of the callbacks are optional
// Check for presence of the Service call callbacks
CHK(pClientCallbacks->createStreamFn != NULL && pClientCallbacks->describeStreamFn != NULL && pClientCallbacks->getStreamingEndpointFn != NULL &&
pClientCallbacks->putStreamFn != NULL && pClientCallbacks->getStreamingTokenFn != NULL && pClientCallbacks->createDeviceFn != NULL,
STATUS_SERVICE_CALL_CALLBACKS_MISSING);
// If we have tags then the tagResource callback should be present
CHK(pDeviceInfo->tagCount == 0 || pClientCallbacks->tagResourceFn != NULL, STATUS_SERVICE_CALL_CALLBACKS_MISSING);
// Fix-up the basic callbacks by providing the default if none selected
if (pClientCallbacks->getCurrentTimeFn == NULL) {
pClientCallbacks->getCurrentTimeFn = kinesisVideoStreamDefaultGetCurrentTime;
}
if (pClientCallbacks->createMutexFn == NULL) {
pClientCallbacks->createMutexFn = kinesisVideoStreamDefaultCreateMutex;
}
if (pClientCallbacks->lockMutexFn == NULL) {
pClientCallbacks->lockMutexFn = kinesisVideoStreamDefaultLockMutex;
}
if (pClientCallbacks->unlockMutexFn == NULL) {
pClientCallbacks->unlockMutexFn = kinesisVideoStreamDefaultUnlockMutex;
}
if (pClientCallbacks->tryLockMutexFn == NULL) {
pClientCallbacks->tryLockMutexFn = kinesisVideoStreamDefaultTryLockMutex;
}
if (pClientCallbacks->freeMutexFn == NULL) {
pClientCallbacks->freeMutexFn = kinesisVideoStreamDefaultFreeMutex;
}
if (pClientCallbacks->createConditionVariableFn == NULL) {
pClientCallbacks->createConditionVariableFn = kinesisVideoStreamDefaultCreateConditionVariable;
}
if (pClientCallbacks->signalConditionVariableFn == NULL) {
pClientCallbacks->signalConditionVariableFn = kinesisVideoStreamDefaultSignalConditionVariable;
}
if (pClientCallbacks->broadcastConditionVariableFn == NULL) {
pClientCallbacks->broadcastConditionVariableFn = kinesisVideoStreamDefaultBroadcastConditionVariable;
}
if (pClientCallbacks->waitConditionVariableFn == NULL) {
pClientCallbacks->waitConditionVariableFn = kinesisVideoStreamDefaultWaitConditionVariable;
}
if (pClientCallbacks->freeConditionVariableFn == NULL) {
pClientCallbacks->freeConditionVariableFn = kinesisVideoStreamDefaultFreeConditionVariable;
}
if (pClientCallbacks->streamReadyFn == NULL) {
pClientCallbacks->streamReadyFn = kinesisVideoStreamDefaultStreamReady;
}
if (pClientCallbacks->streamClosedFn == NULL) {
pClientCallbacks->streamClosedFn = kinesisVideoStreamDefaultEndOfStream;
}
if (pClientCallbacks->clientReadyFn == NULL) {
pClientCallbacks->clientReadyFn = kinesisVideoStreamDefaultClientReady;
}
if (pClientCallbacks->streamDataAvailableFn == NULL) {
pClientCallbacks->streamDataAvailableFn = kinesisVideoStreamDefaultStreamDataAvailable;
}
if (pClientCallbacks->clientShutdownFn == NULL) {
pClientCallbacks->clientShutdownFn = kinesisVideoStreamDefaultClientShutdown;
}
if (pClientCallbacks->streamShutdownFn == NULL) {
pClientCallbacks->streamShutdownFn = kinesisVideoStreamDefaultStreamShutdown;
}
if (pClientCallbacks->getRandomNumberFn == NULL) {
// Call to seed the number generator
SRAND((UINT32) pClientCallbacks->getCurrentTimeFn(pClientCallbacks->customData));
pClientCallbacks->getRandomNumberFn = kinesisVideoStreamDefaultGetRandomNumber;
}
if (pClientCallbacks->logPrintFn != NULL) {
globalCustomLogPrintFn = pClientCallbacks->logPrintFn;
}
CleanUp:
return retStatus;
}