X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=homescreen%2Fsrc%2FAglShellGrpcClient.cpp;h=f3c72ca923a0a9db72e74683565a9c99619e2264;hb=537937138e9855408c6b8af4331725c8a1d52705;hp=ee7510fca8a1b290626209b62a02aac8a939d57f;hpb=c13f6c196066bccb33c3a1f524a108b52c356bfd;p=apps%2Fhomescreen.git diff --git a/homescreen/src/AglShellGrpcClient.cpp b/homescreen/src/AglShellGrpcClient.cpp index ee7510f..f3c72ca 100644 --- a/homescreen/src/AglShellGrpcClient.cpp +++ b/homescreen/src/AglShellGrpcClient.cpp @@ -25,28 +25,31 @@ namespace { GrpcClient::GrpcClient() { - struct timespec ts; - auto channel = grpc::CreateChannel(kDefaultGrpcServiceAddress, + m_channel = grpc::CreateChannel(kDefaultGrpcServiceAddress, grpc::InsecureChannelCredentials()); + // init the stub here + m_stub = agl_shell_ipc::AglShellManagerService::NewStub(m_channel); + reader = new Reader(m_stub.get()); +} + +void +GrpcClient::WaitForConnected(int wait_time_ms, int tries_timeout) +{ + struct timespec ts; + grpc_connectivity_state state; + int try_ = 0; + clock_gettime(CLOCK_MONOTONIC, &ts); ts.tv_sec = 0; ts.tv_nsec = 500 * 1000 * 1000; // 500ms - bool try_to_connect = true; - grpc_connectivity_state state = channel->GetState(try_to_connect); - - while (state != GRPC_CHANNEL_READY) { - state = channel->GetState(try_to_connect); - + while (((state = m_channel->GetState(true)) != GRPC_CHANNEL_READY) && + try_++ < tries_timeout) { HMI_DEBUG("HomesScreen", "waiting for channel state to be ready, current state %d", state); nanosleep(&ts, NULL); } - - // init the stub here - m_stub = agl_shell_ipc::AglShellManagerService::NewStub(channel); - reader = new Reader(m_stub.get()); }