/
HealthServiceConsumer.java
69 lines (59 loc) · 2.74 KB
/
HealthServiceConsumer.java
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
64
65
66
67
68
69
/*******************************************************************************
* Copyright (c) 2021 Composent Inc., and others.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Contributors: Composent, Inc. - initial API and implementation
******************************************************************************/
package org.eclipse.ecf.examples.provider.grpc.health.consumer;
import java.util.concurrent.TimeUnit;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
import io.grpc.health.v1.HealthCheckRequest;
import io.grpc.health.v1.HealthCheckService;
import io.reactivex.Flowable;
import io.reactivex.Single;
@Component(immediate = true)
public class HealthServiceConsumer {
@Reference
private HealthCheckService healthService;
private Single<HealthCheckRequest> getSingle(String message) {
return Single.just(HealthCheckRequest.newBuilder().setMessage(message).build());
}
private Flowable<HealthCheckRequest> getRequestFlowable(int count, String message) {
HealthCheckRequest[] requests = new HealthCheckRequest[count];
for (int i = 0; i < count; i++) {
requests[i] = HealthCheckRequest.newBuilder().setMessage(message + " #" + String.valueOf(i)).build();
}
return Flowable.fromArray(requests).delay(500,TimeUnit.MILLISECONDS);
}
void activate() {
// test check
healthService.check(getSingle("check client message")).subscribe(resp -> {
System.out.println("check response=" + resp.getStatus());
});
// Test watchServer: single request, multiple server responses
healthService.watchServer(getSingle("watchServer client message")).subscribe(resp -> {
System.out.println("watchServer received=" + resp.getStatus());
});
// Test watchClient: multiple client requests, single server response
healthService.watchClient(getRequestFlowable(40, "watchClient client message")).subscribe(resp -> {
System.out.println("watchClient response=" + resp.getStatus());
});
// Test watchBidi: multiple client requests, multiple server responses
// Make flowable of 30 requests for watchClient
healthService.watchBidi(getRequestFlowable(30, "watchBidi client message")).subscribe(resp -> {
System.out.println("watchBidi received=" + resp.getStatus());
});
}
}