in facebook-gamingservices/src/main/java/com/facebook/gamingservices/cloudgaming/DaemonRequest.java [82:140]
private CompletableFuture<GraphResponse> createRequest() {
CompletableFuture<GraphResponse> response =
CompletableFuture.supplyAsync(
new Supplier<GraphResponse>() {
@Override
public GraphResponse get() {
String uniqueID = UUID.randomUUID().toString();
try {
mParameters.put(SDKConstants.REQUEST_ID, uniqueID);
Intent intent = new Intent();
// allow initialization (auto-login) request to be a publicly broadcasted
String functionType = mParameters.getString(SDKConstants.PARAM_TYPE);
mLogger.logPreparingRequest(functionType, uniqueID, mParameters);
if (!functionType.equals(SDKMessageEnum.GET_ACCESS_TOKEN.toString())
&& !functionType.equals(SDKMessageEnum.IS_ENV_READY.toString())) {
SharedPreferences sharedPreferences =
mContext.getSharedPreferences(
SDKConstants.PREF_DAEMON_PACKAGE_NAME, Activity.MODE_PRIVATE);
String daemonPackageName =
sharedPreferences.getString(SDKConstants.PARAM_DAEMON_PACKAGE_NAME, null);
// does not exist
if (daemonPackageName == null) {
FacebookRequestError error =
new FacebookRequestError(
FacebookRequestError.INVALID_ERROR_CODE,
"DAEMON_REQUEST_EXECUTE_ASYNC_FAILED",
"Unable to correctly create the request with a secure connection");
return DaemonReceiver.createErrorResponse(error, uniqueID);
} else {
intent.setPackage(daemonPackageName);
}
}
intent.setAction(SDKConstants.REQUEST_ACTION);
Iterator iter = mParameters.keys();
while (iter.hasNext()) {
String key = (String) iter.next();
String value = mParameters.getString(key);
intent.putExtra(key, value);
}
CompletableFuture<GraphResponse> future = new CompletableFuture<GraphResponse>();
mRequestStore.put(uniqueID, future);
mContext.sendBroadcast(intent);
mLogger.logSentRequest(functionType, uniqueID, mParameters);
return future.get();
} catch (JSONException | InterruptedException | ExecutionException e) {
FacebookRequestError error =
new FacebookRequestError(
FacebookRequestError.INVALID_ERROR_CODE,
"DAEMON_REQUEST_EXECUTE_ASYNC_FAILED",
"Unable to correctly create the request or obtain response");
return DaemonReceiver.createErrorResponse(error, uniqueID);
}
}
});
return response;
}