2019-02-18 07:41:30 +00:00
|
|
|
from __future__ import print_function
|
|
|
|
import logging
|
|
|
|
from contextlib import contextmanager
|
|
|
|
|
|
|
|
import grpc
|
|
|
|
|
|
|
|
import core_pb2
|
|
|
|
import core_pb2_grpc
|
|
|
|
|
|
|
|
|
2019-02-24 15:44:41 +00:00
|
|
|
def update_proto(obj, **kwargs):
|
|
|
|
for key in kwargs:
|
|
|
|
value = kwargs[key]
|
|
|
|
if value is not None:
|
|
|
|
logging.info("setting proto key(%s) value(%s)", key, value)
|
|
|
|
setattr(obj, key, value)
|
|
|
|
|
|
|
|
|
2019-02-18 07:41:30 +00:00
|
|
|
class CoreApiClient(object):
|
|
|
|
def __init__(self, address="localhost:50051"):
|
|
|
|
self.address = address
|
|
|
|
self.stub = None
|
|
|
|
|
2019-02-24 15:44:41 +00:00
|
|
|
def create_session(self):
|
|
|
|
return self.stub.CreateSession(core_pb2.CreateSessionRequest())
|
|
|
|
|
2019-02-18 07:41:30 +00:00
|
|
|
def get_sessions(self):
|
|
|
|
return self.stub.GetSessions(core_pb2.SessionsRequest())
|
|
|
|
|
2019-02-19 06:54:14 +00:00
|
|
|
def get_session(self, _id):
|
|
|
|
request = core_pb2.SessionRequest()
|
|
|
|
request.id = _id
|
|
|
|
return self.stub.GetSession(request)
|
|
|
|
|
2019-02-21 05:19:35 +00:00
|
|
|
def get_session_options(self, _id):
|
|
|
|
request = core_pb2.SessionOptionsRequest()
|
|
|
|
request.id = _id
|
|
|
|
return self.stub.GetSessionOptions(request)
|
|
|
|
|
|
|
|
def get_session_location(self, _id):
|
2019-02-24 15:44:41 +00:00
|
|
|
request = core_pb2.GetSessionLocationRequest()
|
2019-02-21 05:19:35 +00:00
|
|
|
request.id = _id
|
|
|
|
return self.stub.GetSessionLocation(request)
|
|
|
|
|
2019-02-24 15:44:41 +00:00
|
|
|
def set_session_location(self, _id, x=None, y=None , z=None, lat=None, lon=None, alt=None, scale=None):
|
|
|
|
request = core_pb2.SetSessionLocationRequest()
|
|
|
|
request.id = _id
|
|
|
|
update_proto(request.position, x=x, y=y, z=z, lat=lat, lon=lon, alt=alt)
|
|
|
|
update_proto(request, scale=scale)
|
|
|
|
return self.stub.SetSessionLocation(request)
|
|
|
|
|
2019-02-18 07:41:30 +00:00
|
|
|
@contextmanager
|
|
|
|
def connect(self):
|
|
|
|
channel = grpc.insecure_channel(self.address)
|
|
|
|
try:
|
|
|
|
self.stub = core_pb2_grpc.CoreApiStub(channel)
|
|
|
|
yield channel
|
|
|
|
finally:
|
|
|
|
channel.close()
|
|
|
|
|
|
|
|
|
|
|
|
def main():
|
|
|
|
client = CoreApiClient()
|
|
|
|
with client.connect():
|
2019-02-24 15:44:41 +00:00
|
|
|
# create session
|
|
|
|
response = client.create_session()
|
|
|
|
print("created session: %s" % response)
|
|
|
|
|
2019-02-18 07:41:30 +00:00
|
|
|
response = client.get_sessions()
|
|
|
|
print("core client received: %s" % response)
|
|
|
|
|
2019-02-19 06:54:14 +00:00
|
|
|
if len(response.sessions) > 0:
|
|
|
|
session_data = response.sessions[0]
|
2019-02-24 15:44:41 +00:00
|
|
|
|
|
|
|
# set session location
|
|
|
|
response = client.set_session_location(
|
|
|
|
session_data.id,
|
|
|
|
x=0, y=0, z=None,
|
|
|
|
lat=47.57917, lon=-122.13232, alt=2.0,
|
|
|
|
scale=150000.0
|
|
|
|
)
|
|
|
|
print("set location response: %s" % response)
|
|
|
|
|
|
|
|
# get session
|
2019-02-19 06:54:14 +00:00
|
|
|
session = client.get_session(session_data.id)
|
|
|
|
print(session)
|
|
|
|
|
2019-02-24 15:44:41 +00:00
|
|
|
# get options
|
2019-02-21 05:19:35 +00:00
|
|
|
print(client.get_session_options(session_data.id))
|
2019-02-24 15:44:41 +00:00
|
|
|
|
|
|
|
# get location
|
2019-02-21 05:19:35 +00:00
|
|
|
print(client.get_session_location(session_data.id))
|
|
|
|
|
2019-02-18 07:41:30 +00:00
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
logging.basicConfig()
|
|
|
|
main()
|