in src/main/java/com/amazonaws/kinesisvideo/internal/service/DefaultServiceCallbacksImpl.java [174:224]
public void createStream(@Nonnull final String deviceName,
@Nonnull final String streamName,
@Nonnull final String contentType,
@Nullable final String kmsKeyId,
final long retentionPeriod,
final long callAfter,
final long timeout,
@Nullable final byte[] authData,
final int authType,
final long customData)
throws ProducerException {
Preconditions.checkState(isInitialized(), "Service callbacks object should be initialized first");
final long delay = calculateRelativeServiceCallAfter(callAfter);
final Runnable task = new Runnable() {
@Override
public void run() {
int statusCode;
String streamArn = null;
final KinesisVideoCredentialsProvider credentialsProvider = getCredentialsProvider(authData, log);
final long retentionInHours = retentionPeriod / Time.HUNDREDS_OF_NANOS_IN_AN_HOUR;
final long timeoutInMillis = timeout / Time.HUNDREDS_OF_NANOS_IN_A_MILLISECOND;
try {
streamArn = kinesisVideoServiceClient.createStream(
streamName,
deviceName,
contentType,
kmsKeyId,
retentionInHours,
timeoutInMillis,
credentialsProvider);
statusCode = HTTP_OK;
} catch (final KinesisVideoException e) {
statusCode = getStatusCodeFromException(e);
log.error("Kinesis Video service client returned an error " + e.getMessage() + ". Reporting to Kinesis Video PIC.");
}
try {
kinesisVideoProducer.createStreamResult(customData, streamArn, statusCode);
} catch (final ProducerException e) {
// TODO: Deal with the runtime exception properly in this and following cases
throw new RuntimeException(e);
}
}
};
executor.schedule(task, delay, TimeUnit.NANOSECONDS);
}