forked from mavlink/MAVSDK-Java
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcall.j2
52 lines (44 loc) · 2.09 KB
/
call.j2
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
@CheckReturnValue
public Completable {{ name.lower_camel_case }}({% for param in params %}@NonNull {{ param.type_info.name }} {{ 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 }}())::iterator)
{%- else %}
.set{{ param.name.upper_camel_case }}({{ param.name.lower_camel_case }}.rpc{{ param.type_info.name }}())
{%- endif %}
{%- endfor %}
.build();
Completable completable = Completable.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 {
emitter.onComplete();
}
{%- else %}
emitter.onComplete();
{%- endif %}
}
@Override
public void onError(Throwable t) {
emitter.onError(t);
}
@Override
public void onCompleted() {}
});
});
return completable.subscribeOn(Schedulers.io());
}