in src/main/java/com/amazonaws/kinesisvideo/demoapp/fragment/StreamWebRtcConfigurationFragment.java [309:377]
protected String doInBackground(Object... objects) {
final String region = (String) objects[0];
final String channelName = (String) objects[1];
final ChannelRole role = (ChannelRole) objects[2];
AWSKinesisVideoClient awsKinesisVideoClient = null;
try {
awsKinesisVideoClient = mFragment.get().getAwsKinesisVideoClient(region);
} catch (Exception e) {
return "Create client failed with " + e.getLocalizedMessage();
}
try {
DescribeSignalingChannelResult describeSignalingChannelResult = awsKinesisVideoClient.describeSignalingChannel(
new DescribeSignalingChannelRequest()
.withChannelName(channelName));
Log.i(TAG, "Channel ARN is " + describeSignalingChannelResult.getChannelInfo().getChannelARN());
mFragment.get().mChannelArn = describeSignalingChannelResult.getChannelInfo().getChannelARN();
} catch (final ResourceNotFoundException e) {
if (role.equals(ChannelRole.MASTER)) {
try {
CreateSignalingChannelResult createSignalingChannelResult = awsKinesisVideoClient.createSignalingChannel(
new CreateSignalingChannelRequest()
.withChannelName(channelName));
mFragment.get().mChannelArn = createSignalingChannelResult.getChannelARN();
} catch (Exception ex) {
return "Create Signaling Channel failed with Exception " + ex.getLocalizedMessage();
}
} else {
return "Signaling Channel " + channelName +" doesn't exist!";
}
} catch (Exception ex) {
return "Describe Signaling Channel failed with Exception " + ex.getLocalizedMessage();
}
try {
GetSignalingChannelEndpointResult getSignalingChannelEndpointResult = awsKinesisVideoClient.getSignalingChannelEndpoint(
new GetSignalingChannelEndpointRequest()
.withChannelARN(mFragment.get().mChannelArn)
.withSingleMasterChannelEndpointConfiguration(
new SingleMasterChannelEndpointConfiguration()
.withProtocols("WSS", "HTTPS")
.withRole(role)));
Log.i(TAG, "Endpoints " + getSignalingChannelEndpointResult.toString());
mFragment.get().mEndpointList.addAll(getSignalingChannelEndpointResult.getResourceEndpointList());
} catch (Exception e) {
return "Get Signaling Endpoint failed with Exception " + e.getLocalizedMessage();
}
String dataEndpoint = null;
for (ResourceEndpointListItem endpoint : mFragment.get().mEndpointList) {
if (endpoint.getProtocol().equals("HTTPS")) {
dataEndpoint = endpoint.getResourceEndpoint();
}
}
try {
final AWSKinesisVideoSignalingClient awsKinesisVideoSignalingClient = mFragment.get().getAwsKinesisVideoSignalingClient(region, dataEndpoint);
GetIceServerConfigResult getIceServerConfigResult = awsKinesisVideoSignalingClient.getIceServerConfig(
new GetIceServerConfigRequest().withChannelARN(mFragment.get().mChannelArn).withClientId(role.name()));
mFragment.get().mIceServerList.addAll(getIceServerConfigResult.getIceServerList());
} catch (Exception e) {
return "Get Ice Server Config failed with Exception " + e.getLocalizedMessage();
}
return null;
}