-
Notifications
You must be signed in to change notification settings - Fork 60
Expand file tree
/
Copy pathrequest.j2
More file actions
63 lines (56 loc) · 3.49 KB
/
Copy pathrequest.j2
File metadata and controls
63 lines (56 loc) · 3.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
@CheckReturnValue
public Single<{% if return_type.is_primitive %}{{ return_type.name }}{% elif return_type.is_repeated %}List<{{ plugin_name.upper_camel_case }}.{{ return_type.inner_name.upper_camel_case }}>{% else %}{{ plugin_name.upper_camel_case }}.{{ return_type.name.upper_camel_case }}{% endif %}> {{ name.lower_camel_case }}{% if name.lower_camel_case == "getFlightInformation" %}Sync{% endif %}({% for param in params %}@NonNull {% if param.type_info.is_primitive %}{{ param.type_info.name }}{% else %}{{ param.type_info.name.upper_camel_case }}{% endif %} {{ param.name.lower_camel_case }}{{ ", " if not loop.last }}{% endfor %}) {
{{ plugin_name.upper_camel_case }}Proto.{{ name.upper_camel_case }}Request request = {{ plugin_name.upper_camel_case }}Proto.{{ name.upper_camel_case }}Request.newBuilder()
{%- for param in params %}
{%- if param.type_info.is_primitive %}
.set{{ param.name.upper_camel_case }}({{ param.name.lower_camel_case }})
{%- elif param.type_info.is_repeated %}
.addAll{{ param.name.upper_camel_case }}({{ param.name.lower_camel_case }}.stream().map(elem -> elem.rpc{{ param.type_info.inner_name.upper_camel_case }}())::iterator)
{%- else %}
.set{{ param.name.upper_camel_case }}({{ param.name.lower_camel_case }}.rpc{{ param.type_info.name.upper_camel_case }}())
{%- endif %}
{%- endfor %}
.build();
Single<{% if return_type.is_primitive %}{{ return_type.name }}{% elif return_type.is_repeated %}List<{{ plugin_name.upper_camel_case }}.{{ return_type.inner_name.upper_camel_case }}>{% else %}{{ plugin_name.upper_camel_case }}.{{ return_type.name.upper_camel_case }}{% endif %}> single = Single.create(emitter -> {
if (!isInitialized) {
Thread.sleep(PLUGIN_INIT_TIMEOUT_MS);
if (!isInitialized) {
throw new MavsdkException("No System");
}
}
stub.{{ name.lower_camel_case }}(request, new StreamObserver<{{plugin_name.upper_camel_case }}Proto.{{ name.upper_camel_case }}Response>() {
@Override
public void onNext({{ plugin_name.upper_camel_case }}Proto.{{ name.upper_camel_case }}Response value) {
{%- if has_result %}
{{ plugin_name.upper_camel_case }}Result result = {{ plugin_name.upper_camel_case }}Result.translateFromRpc(value.get{{ plugin_name.upper_camel_case }}Result());
if (result.result != {{ plugin_name.upper_camel_case }}Result.Result.SUCCESS) {
emitter.onError(new {{ plugin_name.upper_camel_case }}Exception(result.result, result.resultStr));
} else {
{%- endif %}
{%- if return_type.is_primitive %}
{%- if return_type.is_repeated %}
emitter.onSuccess(value.get{{ return_name.upper_camel_case }}List());
{%- else %}
emitter.onSuccess(value.get{{ return_name.upper_camel_case }}());
{%- endif %}
{%- else %}
{%- if return_type.is_repeated %}
emitter.onSuccess(value.get{{ return_name.upper_camel_case }}List().stream().map({{ return_type.inner_name.upper_camel_case }}::translateFromRpc).collect(Collectors.toList()));
{%- else %}
emitter.onSuccess({{ return_type.name.upper_camel_case }}.translateFromRpc(value.get{{ return_name.upper_camel_case }}()));
{%- endif %}
{%- endif %}
{%- if has_result %}
}
{%- endif %}
}
@Override
public void onError(Throwable t) {
emitter.onError(t);
}
@Override
public void onCompleted() {}
});
});
return single.subscribeOn(Schedulers.io());
}