8 #include <opentracing/ext/tags.h>
9 #include <google/protobuf/io/zero_copy_stream_impl_lite.h>
17 #include <boost/functional/hash.hpp>
19 #include <mal/Mal.hpp>
20 #include <mal/util/MalTracingUtil.hpp>
21 #include <mal/utility/future.hpp>
22 #include <mal/rr/ClientAsync.hpp>
23 #include <mal/rr/AmiZpb.hpp>
24 #include <mal/ps/ZpbDataEntity.hpp>
25 #include <mal/utility/Uri.hpp>
26 #include <mal/util/ZpbList.hpp>
27 #include <mal/types/ZpbMalTypes.hpp>
28 #include <mal/rr/ServerContextZpb.hpp>
29 #include <mal/rr/ServerContextZpbAmi.hpp>
30 #include <mal/rr/ServerContextProvider.hpp>
40 public virtual ::elt::mal::ps::ZpbDataEntity<::exmalif::TelPosition> {
42 typedef ::generated::zpb::exmalif::TelPosition
ZpbType;
48 m_zpbObj(inner, ::
elt::mal::util::list::NoopDeleter<
ZpbType*>())
73 return m_zpbObj->ra();
80 return m_zpbObj->dec();
84 m_zpbObj->set_dec(dec);
87 std::unique_ptr<::exmalif::TelPosition>
clone()
const override {
90 auto const* traceableDataEntity =
dynamic_cast<const ::elt::mal::ps::Traceable*
>(
this);
91 if (traceableDataEntity) {
92 auto *clonedTraceable =
dynamic_cast<::elt::mal::ps::Traceable*
>(cloned.get());
93 if (clonedTraceable) {
94 clonedTraceable->setTrace(traceableDataEntity->getTrace());
100 bool keyEquals(const ::exmalif::TelPosition& other)
const override {
105 std::size_t seed = 0;
109 std::unique_ptr<::exmalif::TelPosition>
cloneKey()
const override {
119 msg.rebuild(m_zpbObj->ByteSizeLong());
120 return m_zpbObj->SerializeToArray(msg.data(), msg.size());
124 return m_zpbObj->SerializeToString(&output);
128 return m_zpbObj->ParseFromString(data);
132 google::protobuf::io::ArrayInputStream ais(data, size);
133 return m_zpbObj->ParseFromZeroCopyStream(&ais);
136 void copy(const ::exmalif::TelPosition &from)
override {
140 auto const* traceableFrom =
dynamic_cast<const ::elt::mal::ps::Traceable*
>(&from);
142 auto* traceableTo =
dynamic_cast<::elt::mal::ps::Traceable*
>(
this);
144 traceableTo->setTrace(traceableFrom->getTrace());
160 std::shared_ptr<ZpbType> m_zpbObj;
179 public virtual ::elt::mal::ps::ZpbDataEntity<::exmalif::AxesPosition> {
181 typedef ::generated::zpb::exmalif::AxesPosition
ZpbType;
187 m_zpbObj(inner, ::
elt::mal::util::list::NoopDeleter<
ZpbType*>())
212 return m_zpbObj->alt();
216 m_zpbObj->set_alt(alt);
219 return m_zpbObj->az();
223 m_zpbObj->set_az(az);
226 std::unique_ptr<::exmalif::AxesPosition>
clone()
const override {
229 auto const* traceableDataEntity =
dynamic_cast<const ::elt::mal::ps::Traceable*
>(
this);
230 if (traceableDataEntity) {
231 auto *clonedTraceable =
dynamic_cast<::elt::mal::ps::Traceable*
>(cloned.get());
232 if (clonedTraceable) {
233 clonedTraceable->setTrace(traceableDataEntity->getTrace());
239 bool keyEquals(const ::exmalif::AxesPosition& other)
const override {
244 std::size_t seed = 0;
248 std::unique_ptr<::exmalif::AxesPosition>
cloneKey()
const override {
258 msg.rebuild(m_zpbObj->ByteSizeLong());
259 return m_zpbObj->SerializeToArray(msg.data(), msg.size());
263 return m_zpbObj->SerializeToString(&output);
267 return m_zpbObj->ParseFromString(data);
271 google::protobuf::io::ArrayInputStream ais(data, size);
272 return m_zpbObj->ParseFromZeroCopyStream(&ais);
275 void copy(const ::exmalif::AxesPosition &from)
override {
279 auto const* traceableFrom =
dynamic_cast<const ::elt::mal::ps::Traceable*
>(&from);
281 auto* traceableTo =
dynamic_cast<::elt::mal::ps::Traceable*
>(
this);
283 traceableTo->setTrace(traceableFrom->getTrace());
299 std::shared_ptr<ZpbType> m_zpbObj;
318 public virtual ::elt::mal::ps::ZpbDataEntity<::exmalif::LogInfo> {
320 typedef ::generated::zpb::exmalif::LogInfo
ZpbType;
326 m_zpbObj(inner, ::
elt::mal::util::list::NoopDeleter<
ZpbType*>())
330 explicit LogInfoImpl(const ::generated::zpb::exmalif::LogInfo& inner):
351 return m_zpbObj->level();
355 m_zpbObj->set_level(
level);
358 return m_zpbObj->logger();
362 m_zpbObj->set_logger(
logger);
365 std::unique_ptr<::exmalif::LogInfo>
clone()
const override {
368 auto const* traceableDataEntity =
dynamic_cast<const ::elt::mal::ps::Traceable*
>(
this);
369 if (traceableDataEntity) {
370 auto *clonedTraceable =
dynamic_cast<::elt::mal::ps::Traceable*
>(cloned.get());
371 if (clonedTraceable) {
372 clonedTraceable->setTrace(traceableDataEntity->getTrace());
378 bool keyEquals(const ::exmalif::LogInfo& other)
const override {
383 std::size_t seed = 0;
387 std::unique_ptr<::exmalif::LogInfo>
cloneKey()
const override {
388 std::unique_ptr<::exmalif::LogInfo> entity(
new LogInfoImpl());
397 msg.rebuild(m_zpbObj->ByteSizeLong());
398 return m_zpbObj->SerializeToArray(msg.data(), msg.size());
402 return m_zpbObj->SerializeToString(&output);
406 return m_zpbObj->ParseFromString(data);
410 google::protobuf::io::ArrayInputStream ais(data, size);
411 return m_zpbObj->ParseFromZeroCopyStream(&ais);
414 void copy(const ::exmalif::LogInfo &from)
override {
418 auto const* traceableFrom =
dynamic_cast<const ::elt::mal::ps::Traceable*
>(&from);
420 auto* traceableTo =
dynamic_cast<::elt::mal::ps::Traceable*
>(
this);
422 traceableTo->setTrace(traceableFrom->getTrace());
438 std::shared_ptr<ZpbType> m_zpbObj;
458 typedef ::generated::zpb::exmalif::ExceptionErr
ZpbType;
464 m_zpbObj(inner, ::
elt::mal::util::list::NoopDeleter<
ZpbType*>())
496 return m_zpbObj->desc();
499 return m_zpbObj->code();
502 void copy(const ::exmalif::ExceptionErr &from) {
503 setDesc(from.getDesc());
504 setCode(from.getCode());
512 void setDesc(
const std::string&
desc) {
513 m_zpbObj->set_desc(
desc);
515 void setCode(int32_t
code) {
516 m_zpbObj->set_code(
code);
519 std::shared_ptr<ZpbType> m_zpbObj;
538 public AmiZpbHelper<std::string>,
539 public ReplyObserver<::generated::zpb::exmalif::StdCmds_Reply> {
541 void updateReply(const ::generated::zpb::exmalif::StdCmds_Reply& reply,
bool isPending) {
542 auto& data = reply.data();
543 auto code = reply.header().code();
545 if ((code != ::elt::mal::zpb::rr::CompletionCode::COMPLETED) && !isPending) {
546 std::ostringstream errMsg;
548 errMsg <<
"Code:" << code <<
" Message:";
549 reply.header().has_exceptionmessage() ?
550 errMsg << reply.header().exceptionmessage() : errMsg <<
"Unknown error message";
552 code == ::elt::mal::zpb::rr::CompletionCode::UNKNOWN_EXCEPTION ?
553 handleCompletedExceptionally(::elt::mal::UnhandledRemoteException(errMsg.str())) :
554 handleCompletedExceptionally(::elt::mal::MalException(errMsg.str()));
556 }
else if (isPending) {
557 handlePending((std::string)data.getpresetprogress().retval());
559 handleCompleted((std::string)data.getpresetprogress().retval());
566 handleCompletedExceptionally(::elt::mal::TimeoutException(
"Request timed out"));
580 template<
typename Intf>
586 :
public virtual ::elt::mal::rr::ClientAsyncImpl<::exmalif::StdCmdsAsync,
587 ::generated::zpb::exmalif::StdCmds_Request,
588 ::generated::zpb::exmalif::StdCmds_Reply>,
592 const ::elt::mal::Uri &uri,
593 const std::vector<std::shared_ptr<::elt::mal::rr::qos::QoS>> &standardQoS,
594 const ::elt::mal::Mal::Properties &malSpecificProperties,
595 const std::shared_ptr<::elt::mal::ZpbMal> &zpbMal):
598 uri, standardQoS, malSpecificProperties, zpbMal) {}
600 ::elt::mal::future<std::string>
Stop()
override {
603 new ::generated::zpb::exmalif::StdCmds_Stop_In();
609 auto span = ::elt::mal::util::tracing::createSpan(
610 "Stop", {::opentracing::SetTag {
611 ::opentracing::ext::span_kind, ::opentracing::ext::span_kind_rpc_client }});
613 return sendRequest(request, std::move(span)).then([](
614 ::elt::mal::future<::generated::zpb::exmalif::StdCmds_Reply> replyFut) {
615 auto reply = replyFut.get();
616 auto code = reply.header().code();
618 if (code != ::elt::mal::zpb::rr::CompletionCode::COMPLETED) {
619 std::ostringstream errMsg;
621 errMsg <<
"Code:" << code <<
" Message:";
622 reply.header().has_exceptionmessage() ?
623 errMsg << reply.header().exceptionmessage() : errMsg <<
"Unknown error message";
625 code == ::elt::mal::zpb::rr::CompletionCode::UNKNOWN_EXCEPTION ?
626 ::elt::mal::throw_exception(::elt::mal::UnhandledRemoteException(errMsg.str())) :
627 ::elt::mal::throw_exception(::elt::mal::MalException(errMsg.str()));
629 auto data = reply.data();
630 if (data.stop().has_exexceptionerr()) {
631 ::elt::mal::throw_exception(::exmalif::zpb::ExceptionErrImpl(data.stop().exexceptionerr()));
633 return (std::string)data.stop().retval();
637 ::elt::mal::future<std::string>
Init()
override {
640 new ::generated::zpb::exmalif::StdCmds_Init_In();
646 auto span = ::elt::mal::util::tracing::createSpan(
647 "Init", {::opentracing::SetTag {
648 ::opentracing::ext::span_kind, ::opentracing::ext::span_kind_rpc_client }});
650 return sendRequest(request, std::move(span)).then([](
651 ::elt::mal::future<::generated::zpb::exmalif::StdCmds_Reply> replyFut) {
652 auto reply = replyFut.get();
653 auto code = reply.header().code();
655 if (code != ::elt::mal::zpb::rr::CompletionCode::COMPLETED) {
656 std::ostringstream errMsg;
658 errMsg <<
"Code:" << code <<
" Message:";
659 reply.header().has_exceptionmessage() ?
660 errMsg << reply.header().exceptionmessage() : errMsg <<
"Unknown error message";
662 code == ::elt::mal::zpb::rr::CompletionCode::UNKNOWN_EXCEPTION ?
663 ::elt::mal::throw_exception(::elt::mal::UnhandledRemoteException(errMsg.str())) :
664 ::elt::mal::throw_exception(::elt::mal::MalException(errMsg.str()));
666 auto data = reply.data();
667 if (data.init().has_exexceptionerr()) {
668 ::elt::mal::throw_exception(::exmalif::zpb::ExceptionErrImpl(data.init().exexceptionerr()));
670 return (std::string)data.init().retval();
674 ::elt::mal::future<std::string>
Reset()
override {
677 new ::generated::zpb::exmalif::StdCmds_Reset_In();
683 auto span = ::elt::mal::util::tracing::createSpan(
684 "Reset", {::opentracing::SetTag {
685 ::opentracing::ext::span_kind, ::opentracing::ext::span_kind_rpc_client }});
687 return sendRequest(request, std::move(span)).then([](
688 ::elt::mal::future<::generated::zpb::exmalif::StdCmds_Reply> replyFut) {
689 auto reply = replyFut.get();
690 auto code = reply.header().code();
692 if (code != ::elt::mal::zpb::rr::CompletionCode::COMPLETED) {
693 std::ostringstream errMsg;
695 errMsg <<
"Code:" << code <<
" Message:";
696 reply.header().has_exceptionmessage() ?
697 errMsg << reply.header().exceptionmessage() : errMsg <<
"Unknown error message";
699 code == ::elt::mal::zpb::rr::CompletionCode::UNKNOWN_EXCEPTION ?
700 ::elt::mal::throw_exception(::elt::mal::UnhandledRemoteException(errMsg.str())) :
701 ::elt::mal::throw_exception(::elt::mal::MalException(errMsg.str()));
703 auto data = reply.data();
704 if (data.reset().has_exexceptionerr()) {
705 ::elt::mal::throw_exception(::exmalif::zpb::ExceptionErrImpl(data.reset().exexceptionerr()));
707 return (std::string)data.reset().retval();
711 ::elt::mal::future<std::string>
Enable()
override {
714 new ::generated::zpb::exmalif::StdCmds_Enable_In();
720 auto span = ::elt::mal::util::tracing::createSpan(
721 "Enable", {::opentracing::SetTag {
722 ::opentracing::ext::span_kind, ::opentracing::ext::span_kind_rpc_client }});
724 return sendRequest(request, std::move(span)).then([](
725 ::elt::mal::future<::generated::zpb::exmalif::StdCmds_Reply> replyFut) {
726 auto reply = replyFut.get();
727 auto code = reply.header().code();
729 if (code != ::elt::mal::zpb::rr::CompletionCode::COMPLETED) {
730 std::ostringstream errMsg;
732 errMsg <<
"Code:" << code <<
" Message:";
733 reply.header().has_exceptionmessage() ?
734 errMsg << reply.header().exceptionmessage() : errMsg <<
"Unknown error message";
736 code == ::elt::mal::zpb::rr::CompletionCode::UNKNOWN_EXCEPTION ?
737 ::elt::mal::throw_exception(::elt::mal::UnhandledRemoteException(errMsg.str())) :
738 ::elt::mal::throw_exception(::elt::mal::MalException(errMsg.str()));
740 auto data = reply.data();
741 if (data.enable().has_exexceptionerr()) {
742 ::elt::mal::throw_exception(::exmalif::zpb::ExceptionErrImpl(data.enable().exexceptionerr()));
744 return (std::string)data.enable().retval();
748 ::elt::mal::future<std::string>
Disable()
override {
751 new ::generated::zpb::exmalif::StdCmds_Disable_In();
757 auto span = ::elt::mal::util::tracing::createSpan(
758 "Disable", {::opentracing::SetTag {
759 ::opentracing::ext::span_kind, ::opentracing::ext::span_kind_rpc_client }});
761 return sendRequest(request, std::move(span)).then([](
762 ::elt::mal::future<::generated::zpb::exmalif::StdCmds_Reply> replyFut) {
763 auto reply = replyFut.get();
764 auto code = reply.header().code();
766 if (code != ::elt::mal::zpb::rr::CompletionCode::COMPLETED) {
767 std::ostringstream errMsg;
769 errMsg <<
"Code:" << code <<
" Message:";
770 reply.header().has_exceptionmessage() ?
771 errMsg << reply.header().exceptionmessage() : errMsg <<
"Unknown error message";
773 code == ::elt::mal::zpb::rr::CompletionCode::UNKNOWN_EXCEPTION ?
774 ::elt::mal::throw_exception(::elt::mal::UnhandledRemoteException(errMsg.str())) :
775 ::elt::mal::throw_exception(::elt::mal::MalException(errMsg.str()));
777 auto data = reply.data();
778 if (data.disable().has_exexceptionerr()) {
779 ::elt::mal::throw_exception(::exmalif::zpb::ExceptionErrImpl(data.disable().exexceptionerr()));
781 return (std::string)data.disable().retval();
785 ::elt::mal::future<std::string>
GetState()
override {
788 new ::generated::zpb::exmalif::StdCmds_GetState_In();
794 auto span = ::elt::mal::util::tracing::createSpan(
795 "GetState", {::opentracing::SetTag {
796 ::opentracing::ext::span_kind, ::opentracing::ext::span_kind_rpc_client }});
798 return sendRequest(request, std::move(span)).then([](
799 ::elt::mal::future<::generated::zpb::exmalif::StdCmds_Reply> replyFut) {
800 auto reply = replyFut.get();
801 auto code = reply.header().code();
803 if (code != ::elt::mal::zpb::rr::CompletionCode::COMPLETED) {
804 std::ostringstream errMsg;
806 errMsg <<
"Code:" << code <<
" Message:";
807 reply.header().has_exceptionmessage() ?
808 errMsg << reply.header().exceptionmessage() : errMsg <<
"Unknown error message";
810 code == ::elt::mal::zpb::rr::CompletionCode::UNKNOWN_EXCEPTION ?
811 ::elt::mal::throw_exception(::elt::mal::UnhandledRemoteException(errMsg.str())) :
812 ::elt::mal::throw_exception(::elt::mal::MalException(errMsg.str()));
814 auto data = reply.data();
815 if (data.getstate().has_exexceptionerr()) {
816 ::elt::mal::throw_exception(::exmalif::zpb::ExceptionErrImpl(data.getstate().exexceptionerr()));
818 return (std::string)data.getstate().retval();
825 new ::generated::zpb::exmalif::StdCmds_GetStatus_In();
831 auto span = ::elt::mal::util::tracing::createSpan(
832 "GetStatus", {::opentracing::SetTag {
833 ::opentracing::ext::span_kind, ::opentracing::ext::span_kind_rpc_client }});
835 return sendRequest(request, std::move(span)).then([](
836 ::elt::mal::future<::generated::zpb::exmalif::StdCmds_Reply> replyFut) {
837 auto reply = replyFut.get();
838 auto code = reply.header().code();
840 if (code != ::elt::mal::zpb::rr::CompletionCode::COMPLETED) {
841 std::ostringstream errMsg;
843 errMsg <<
"Code:" << code <<
" Message:";
844 reply.header().has_exceptionmessage() ?
845 errMsg << reply.header().exceptionmessage() : errMsg <<
"Unknown error message";
847 code == ::elt::mal::zpb::rr::CompletionCode::UNKNOWN_EXCEPTION ?
848 ::elt::mal::throw_exception(::elt::mal::UnhandledRemoteException(errMsg.str())) :
849 ::elt::mal::throw_exception(::elt::mal::MalException(errMsg.str()));
851 auto data = reply.data();
852 if (data.getstatus().has_exexceptionerr()) {
853 ::elt::mal::throw_exception(::exmalif::zpb::ExceptionErrImpl(data.getstatus().exexceptionerr()));
855 return (std::string)data.getstatus().retval();
862 new ::generated::zpb::exmalif::StdCmds_GetVersion_In();
868 auto span = ::elt::mal::util::tracing::createSpan(
869 "GetVersion", {::opentracing::SetTag {
870 ::opentracing::ext::span_kind, ::opentracing::ext::span_kind_rpc_client }});
872 return sendRequest(request, std::move(span)).then([](
873 ::elt::mal::future<::generated::zpb::exmalif::StdCmds_Reply> replyFut) {
874 auto reply = replyFut.get();
875 auto code = reply.header().code();
877 if (code != ::elt::mal::zpb::rr::CompletionCode::COMPLETED) {
878 std::ostringstream errMsg;
880 errMsg <<
"Code:" << code <<
" Message:";
881 reply.header().has_exceptionmessage() ?
882 errMsg << reply.header().exceptionmessage() : errMsg <<
"Unknown error message";
884 code == ::elt::mal::zpb::rr::CompletionCode::UNKNOWN_EXCEPTION ?
885 ::elt::mal::throw_exception(::elt::mal::UnhandledRemoteException(errMsg.str())) :
886 ::elt::mal::throw_exception(::elt::mal::MalException(errMsg.str()));
888 auto data = reply.data();
889 if (data.getversion().has_exexceptionerr()) {
890 ::elt::mal::throw_exception(::exmalif::zpb::ExceptionErrImpl(data.getversion().exexceptionerr()));
892 return (std::string)data.getversion().retval();
896 ::elt::mal::future<std::string>
Config()
override {
899 new ::generated::zpb::exmalif::StdCmds_Config_In();
905 auto span = ::elt::mal::util::tracing::createSpan(
906 "Config", {::opentracing::SetTag {
907 ::opentracing::ext::span_kind, ::opentracing::ext::span_kind_rpc_client }});
909 return sendRequest(request, std::move(span)).then([](
910 ::elt::mal::future<::generated::zpb::exmalif::StdCmds_Reply> replyFut) {
911 auto reply = replyFut.get();
912 auto code = reply.header().code();
914 if (code != ::elt::mal::zpb::rr::CompletionCode::COMPLETED) {
915 std::ostringstream errMsg;
917 errMsg <<
"Code:" << code <<
" Message:";
918 reply.header().has_exceptionmessage() ?
919 errMsg << reply.header().exceptionmessage() : errMsg <<
"Unknown error message";
921 code == ::elt::mal::zpb::rr::CompletionCode::UNKNOWN_EXCEPTION ?
922 ::elt::mal::throw_exception(::elt::mal::UnhandledRemoteException(errMsg.str())) :
923 ::elt::mal::throw_exception(::elt::mal::MalException(errMsg.str()));
925 auto data = reply.data();
926 if (data.config().has_exexceptionerr()) {
927 ::elt::mal::throw_exception(::exmalif::zpb::ExceptionErrImpl(data.config().exexceptionerr()));
929 return (std::string)data.config().retval();
933 ::elt::mal::future<std::string>
Exit()
override {
936 new ::generated::zpb::exmalif::StdCmds_Exit_In();
942 auto span = ::elt::mal::util::tracing::createSpan(
943 "Exit", {::opentracing::SetTag {
944 ::opentracing::ext::span_kind, ::opentracing::ext::span_kind_rpc_client }});
946 return sendRequest(request, std::move(span)).then([](
947 ::elt::mal::future<::generated::zpb::exmalif::StdCmds_Reply> replyFut) {
948 auto reply = replyFut.get();
949 auto code = reply.header().code();
951 if (code != ::elt::mal::zpb::rr::CompletionCode::COMPLETED) {
952 std::ostringstream errMsg;
954 errMsg <<
"Code:" << code <<
" Message:";
955 reply.header().has_exceptionmessage() ?
956 errMsg << reply.header().exceptionmessage() : errMsg <<
"Unknown error message";
958 code == ::elt::mal::zpb::rr::CompletionCode::UNKNOWN_EXCEPTION ?
959 ::elt::mal::throw_exception(::elt::mal::UnhandledRemoteException(errMsg.str())) :
960 ::elt::mal::throw_exception(::elt::mal::MalException(errMsg.str()));
962 auto data = reply.data();
963 if (data.exit().has_exexceptionerr()) {
964 ::elt::mal::throw_exception(::exmalif::zpb::ExceptionErrImpl(data.exit().exexceptionerr()));
966 return (std::string)data.exit().retval();
970 ::elt::mal::future<std::string>
SetLogLevel(
const std::shared_ptr<::exmalif::LogInfo>& info)
override {
973 new ::generated::zpb::exmalif::StdCmds_SetLogLevel_In();
989 auto span = ::elt::mal::util::tracing::createSpan(
990 "SetLogLevel", {::opentracing::SetTag {
991 ::opentracing::ext::span_kind, ::opentracing::ext::span_kind_rpc_client }});
993 return sendRequest(request, std::move(span)).then([](
994 ::elt::mal::future<::generated::zpb::exmalif::StdCmds_Reply> replyFut) {
995 auto reply = replyFut.get();
996 auto code = reply.header().code();
998 if (code != ::elt::mal::zpb::rr::CompletionCode::COMPLETED) {
999 std::ostringstream errMsg;
1001 errMsg <<
"Code:" << code <<
" Message:";
1002 reply.header().has_exceptionmessage() ?
1003 errMsg << reply.header().exceptionmessage() : errMsg <<
"Unknown error message";
1005 code == ::elt::mal::zpb::rr::CompletionCode::UNKNOWN_EXCEPTION ?
1006 ::elt::mal::throw_exception(::elt::mal::UnhandledRemoteException(errMsg.str())) :
1007 ::elt::mal::throw_exception(::elt::mal::MalException(errMsg.str()));
1009 auto data = reply.data();
1010 if (data.setloglevel().has_exexceptionerr()) {
1011 ::elt::mal::throw_exception(::exmalif::zpb::ExceptionErrImpl(data.setloglevel().exexceptionerr()));
1013 return (std::string)data.setloglevel().retval();
1017 ::elt::mal::future<std::string>
Preset(
const std::shared_ptr<::exmalif::TelPosition>& pos)
override {
1020 new ::generated::zpb::exmalif::StdCmds_Preset_In();
1036 auto span = ::elt::mal::util::tracing::createSpan(
1037 "Preset", {::opentracing::SetTag {
1038 ::opentracing::ext::span_kind, ::opentracing::ext::span_kind_rpc_client }});
1040 return sendRequest(request, std::move(span)).then([](
1041 ::elt::mal::future<::generated::zpb::exmalif::StdCmds_Reply> replyFut) {
1042 auto reply = replyFut.get();
1043 auto code = reply.header().code();
1045 if (code != ::elt::mal::zpb::rr::CompletionCode::COMPLETED) {
1046 std::ostringstream errMsg;
1048 errMsg <<
"Code:" << code <<
" Message:";
1049 reply.header().has_exceptionmessage() ?
1050 errMsg << reply.header().exceptionmessage() : errMsg <<
"Unknown error message";
1052 code == ::elt::mal::zpb::rr::CompletionCode::UNKNOWN_EXCEPTION ?
1053 ::elt::mal::throw_exception(::elt::mal::UnhandledRemoteException(errMsg.str())) :
1054 ::elt::mal::throw_exception(::elt::mal::MalException(errMsg.str()));
1056 auto data = reply.data();
1057 return (std::string)data.preset().retval();
1061 ::elt::mal::future<std::string>
Move(
const std::shared_ptr<::exmalif::AxesPosition>& pos)
override {
1064 new ::generated::zpb::exmalif::StdCmds_Move_In();
1080 auto span = ::elt::mal::util::tracing::createSpan(
1081 "Move", {::opentracing::SetTag {
1082 ::opentracing::ext::span_kind, ::opentracing::ext::span_kind_rpc_client }});
1084 return sendRequest(request, std::move(span)).then([](
1085 ::elt::mal::future<::generated::zpb::exmalif::StdCmds_Reply> replyFut) {
1086 auto reply = replyFut.get();
1087 auto code = reply.header().code();
1089 if (code != ::elt::mal::zpb::rr::CompletionCode::COMPLETED) {
1090 std::ostringstream errMsg;
1092 errMsg <<
"Code:" << code <<
" Message:";
1093 reply.header().has_exceptionmessage() ?
1094 errMsg << reply.header().exceptionmessage() : errMsg <<
"Unknown error message";
1096 code == ::elt::mal::zpb::rr::CompletionCode::UNKNOWN_EXCEPTION ?
1097 ::elt::mal::throw_exception(::elt::mal::UnhandledRemoteException(errMsg.str())) :
1098 ::elt::mal::throw_exception(::elt::mal::MalException(errMsg.str()));
1100 auto data = reply.data();
1101 if (data.move().has_exexceptionerr()) {
1102 ::elt::mal::throw_exception(::exmalif::zpb::ExceptionErrImpl(data.move().exexceptionerr()));
1104 return (std::string)data.move().retval();
1111 new ::generated::zpb::exmalif::StdCmds_GetPresetProgress_In();
1117 auto span = ::elt::mal::util::tracing::createSpan(
1118 "GetPresetProgress", {::opentracing::SetTag {
1119 ::opentracing::ext::span_kind, ::opentracing::ext::span_kind_rpc_client }});
1121 auto ami = std::shared_ptr<::elt::mal::rr::Ami<std::string>>(
1126 std::dynamic_pointer_cast<::elt::mal::rr::ReplyObserver<
1129 sendRequestWithObserver(request, observer, std::move(span));
1140 const ::elt::mal::Uri &uri,
1141 const std::vector<std::shared_ptr<::elt::mal::rr::qos::QoS>> &standardQoS,
1142 const ::elt::mal::Mal::Properties &malSpecificProperties,
1143 const std::shared_ptr<::elt::mal::ZpbMal> &zpbMal)
1144 : m_delegate(uri, standardQoS, malSpecificProperties, zpbMal), m_timeoutMs{} {
1145 m_timeoutMs = ::elt::mal::util::getReplyTimeQoS(standardQoS);
1148 std::shared_ptr<::elt::mal::Mal>
getMal()
const override {
1149 return m_delegate.getMal();
1153 auto future = m_delegate.
Stop();
1154 if (::elt::mal::future_status::ready
1155 == future.wait_for(boost::chrono::milliseconds(m_timeoutMs))) {
1156 return future.get();
1158 throw ::elt::mal::TimeoutException(
"timeout");
1163 auto future = m_delegate.
Init();
1164 if (::elt::mal::future_status::ready
1165 == future.wait_for(boost::chrono::milliseconds(m_timeoutMs))) {
1166 return future.get();
1168 throw ::elt::mal::TimeoutException(
"timeout");
1173 auto future = m_delegate.
Reset();
1174 if (::elt::mal::future_status::ready
1175 == future.wait_for(boost::chrono::milliseconds(m_timeoutMs))) {
1176 return future.get();
1178 throw ::elt::mal::TimeoutException(
"timeout");
1183 auto future = m_delegate.
Enable();
1184 if (::elt::mal::future_status::ready
1185 == future.wait_for(boost::chrono::milliseconds(m_timeoutMs))) {
1186 return future.get();
1188 throw ::elt::mal::TimeoutException(
"timeout");
1193 auto future = m_delegate.
Disable();
1194 if (::elt::mal::future_status::ready
1195 == future.wait_for(boost::chrono::milliseconds(m_timeoutMs))) {
1196 return future.get();
1198 throw ::elt::mal::TimeoutException(
"timeout");
1203 auto future = m_delegate.
GetState();
1204 if (::elt::mal::future_status::ready
1205 == future.wait_for(boost::chrono::milliseconds(m_timeoutMs))) {
1206 return future.get();
1208 throw ::elt::mal::TimeoutException(
"timeout");
1214 if (::elt::mal::future_status::ready
1215 == future.wait_for(boost::chrono::milliseconds(m_timeoutMs))) {
1216 return future.get();
1218 throw ::elt::mal::TimeoutException(
"timeout");
1224 if (::elt::mal::future_status::ready
1225 == future.wait_for(boost::chrono::milliseconds(m_timeoutMs))) {
1226 return future.get();
1228 throw ::elt::mal::TimeoutException(
"timeout");
1233 auto future = m_delegate.
Config();
1234 if (::elt::mal::future_status::ready
1235 == future.wait_for(boost::chrono::milliseconds(m_timeoutMs))) {
1236 return future.get();
1238 throw ::elt::mal::TimeoutException(
"timeout");
1243 auto future = m_delegate.
Exit();
1244 if (::elt::mal::future_status::ready
1245 == future.wait_for(boost::chrono::milliseconds(m_timeoutMs))) {
1246 return future.get();
1248 throw ::elt::mal::TimeoutException(
"timeout");
1252 std::string
SetLogLevel(
const std::shared_ptr<::exmalif::LogInfo>& info)
override {
1254 if (::elt::mal::future_status::ready
1255 == future.wait_for(boost::chrono::milliseconds(m_timeoutMs))) {
1256 return future.get();
1258 throw ::elt::mal::TimeoutException(
"timeout");
1262 std::string
Preset(
const std::shared_ptr<::exmalif::TelPosition>& pos)
override {
1263 auto future = m_delegate.
Preset(pos);
1264 if (::elt::mal::future_status::ready
1265 == future.wait_for(boost::chrono::milliseconds(m_timeoutMs))) {
1266 return future.get();
1268 throw ::elt::mal::TimeoutException(
"timeout");
1272 std::string
Move(
const std::shared_ptr<::exmalif::AxesPosition>& pos)
override {
1273 auto future = m_delegate.
Move(pos);
1274 if (::elt::mal::future_status::ready
1275 == future.wait_for(boost::chrono::milliseconds(m_timeoutMs))) {
1276 return future.get();
1278 throw ::elt::mal::TimeoutException(
"timeout");
1293 return m_delegate.asyncConnect();
1297 return m_delegate.registerConnectionListener(listener);
1302 int64_t m_timeoutMs;
1309 ::elt::mal::rr::ZpbServer &zpbServer,
1310 const std::shared_ptr<::exmalif::AsyncStdCmds> &entity,
1311 const std::shared_ptr<::elt::mal::Mal> &mal)
1312 : m_zpbServer(zpbServer), m_entity(entity), m_mal(mal) {}
1316 const std::string &
id,
const std::string &topicIdFrame,
1317 const std::string &headerFrame,
1318 const ::elt::mal::zpb::rr::ZpbHeader &header) {
1319 if (!::elt::mal::util::getSocketHasRcvMore(socket)) {
1320 std::unique_ptr<::elt::mal::zpb::rr::ReplyHeader> unhandledExReplyHeader(
1321 new ::elt::mal::zpb::rr::ReplyHeader());
1323 unhandledExReplyHeader->set_code(::elt::mal::zpb::rr::CompletionCode::INVALID_ARGUMENT);
1324 unhandledExReplyHeader->set_exceptionmessage(
"missing request frame");
1326 sendReply(socket,
id, topicIdFrame, headerFrame, std::move(unhandledExReplyHeader),
1327 std::unique_ptr<::generated::zpb::exmalif::StdCmds_Return>());
1335 zmq::message_t msgFrame;
1336 socket.recv(&msgFrame, 0);
1338 if (!request.ParseFromArray(msgFrame.data(), msgFrame.size())) {
1339 std::unique_ptr<::elt::mal::zpb::rr::ReplyHeader> unhandledExReplyHeader(
1340 new ::elt::mal::zpb::rr::ReplyHeader());
1342 unhandledExReplyHeader->set_code(::elt::mal::zpb::rr::CompletionCode::INVALID_ARGUMENT);
1343 unhandledExReplyHeader->set_exceptionmessage(
"Invalid Request: Request parsing failed");
1345 sendReply(socket,
id, topicIdFrame, headerFrame, std::move(unhandledExReplyHeader),
1346 std::unique_ptr<::generated::zpb::exmalif::StdCmds_Return>());
1353 if (call->has_stop()) {
1354 auto span = std::shared_ptr<::opentracing::Span>();
1355 if (header.has_trace()) {
1356 auto spanUnique = ::elt::mal::util::tracing::createSpan(
1357 "StdCmds::Stop", header.trace(), ::opentracing::ext::span_kind_rpc_server);
1358 span = std::move(spanUnique);
1359 ::elt::mal::util::tracing::ScopeManagerFactory::getScopeManager().activate(span);
1361 auto params_ = call->mutable_stop();
1363 auto serverContext = std::unique_ptr<::elt::mal::rr::ServerContext<std::string>>(
1364 new ::elt::mal::rr::ServerContextZpb<std::string>(m_mal));
1366 ::elt::mal::rr::ServerContextProvider::setInstance<
1367 ::elt::mal::rr::ServerContext<std::string>>(serverContext);
1369 m_entity->Stop().then(m_zpbServer.getExecutor(), [
this, &socket, id, topicIdFrame, headerFrame, params_, span]
1370 (::elt::mal::future<std::string> f) {
1371 if (!f.has_exception()) {
1372 std::unique_ptr<::generated::zpb::exmalif::StdCmds_Return> data(
1373 new ::generated::zpb::exmalif::StdCmds_Return());
1375 auto out = new ::generated::zpb::exmalif::StdCmds_Stop_Out();
1377 out->set_retval(f.get());
1379 data->set_allocated_stop(out);
1380 if (span) { span->Finish();}
1384 ::elt::mal::rethrow_exception(f.get_exception_ptr());
1387 std::unique_ptr<::generated::zpb::exmalif::StdCmds_Return> data(new ::generated::zpb::exmalif::StdCmds_Return());
1391 auto out = new ::generated::zpb::exmalif::StdCmds_Stop_Out();
1393 *out->mutable_exexceptionerr() = **&_ex;
1395 data->set_allocated_stop(out);
1396 if (span) { span->Finish();}
1399 if (span) { span->Finish();}
1401 headerFrame, f.get_exception_ptr());
1405 }
else if (call->has_init()) {
1406 auto span = std::shared_ptr<::opentracing::Span>();
1407 if (header.has_trace()) {
1408 auto spanUnique = ::elt::mal::util::tracing::createSpan(
1409 "StdCmds::Init", header.trace(), ::opentracing::ext::span_kind_rpc_server);
1410 span = std::move(spanUnique);
1411 ::elt::mal::util::tracing::ScopeManagerFactory::getScopeManager().activate(span);
1413 auto params_ = call->mutable_init();
1415 auto serverContext = std::unique_ptr<::elt::mal::rr::ServerContext<std::string>>(
1416 new ::elt::mal::rr::ServerContextZpb<std::string>(m_mal));
1418 ::elt::mal::rr::ServerContextProvider::setInstance<
1419 ::elt::mal::rr::ServerContext<std::string>>(serverContext);
1421 m_entity->Init().then(m_zpbServer.getExecutor(), [
this, &socket, id, topicIdFrame, headerFrame, params_, span]
1422 (::elt::mal::future<std::string> f) {
1423 if (!f.has_exception()) {
1424 std::unique_ptr<::generated::zpb::exmalif::StdCmds_Return> data(
1425 new ::generated::zpb::exmalif::StdCmds_Return());
1427 auto out = new ::generated::zpb::exmalif::StdCmds_Init_Out();
1429 out->set_retval(f.get());
1431 data->set_allocated_init(out);
1432 if (span) { span->Finish();}
1436 ::elt::mal::rethrow_exception(f.get_exception_ptr());
1439 std::unique_ptr<::generated::zpb::exmalif::StdCmds_Return> data(new ::generated::zpb::exmalif::StdCmds_Return());
1443 auto out = new ::generated::zpb::exmalif::StdCmds_Init_Out();
1445 *out->mutable_exexceptionerr() = **&_ex;
1447 data->set_allocated_init(out);
1448 if (span) { span->Finish();}
1451 if (span) { span->Finish();}
1453 headerFrame, f.get_exception_ptr());
1457 }
else if (call->has_reset()) {
1458 auto span = std::shared_ptr<::opentracing::Span>();
1459 if (header.has_trace()) {
1460 auto spanUnique = ::elt::mal::util::tracing::createSpan(
1461 "StdCmds::Reset", header.trace(), ::opentracing::ext::span_kind_rpc_server);
1462 span = std::move(spanUnique);
1463 ::elt::mal::util::tracing::ScopeManagerFactory::getScopeManager().activate(span);
1465 auto params_ = call->mutable_reset();
1467 auto serverContext = std::unique_ptr<::elt::mal::rr::ServerContext<std::string>>(
1468 new ::elt::mal::rr::ServerContextZpb<std::string>(m_mal));
1470 ::elt::mal::rr::ServerContextProvider::setInstance<
1471 ::elt::mal::rr::ServerContext<std::string>>(serverContext);
1473 m_entity->Reset().then(m_zpbServer.getExecutor(), [
this, &socket, id, topicIdFrame, headerFrame, params_, span]
1474 (::elt::mal::future<std::string> f) {
1475 if (!f.has_exception()) {
1476 std::unique_ptr<::generated::zpb::exmalif::StdCmds_Return> data(
1477 new ::generated::zpb::exmalif::StdCmds_Return());
1479 auto out = new ::generated::zpb::exmalif::StdCmds_Reset_Out();
1481 out->set_retval(f.get());
1483 data->set_allocated_reset(out);
1484 if (span) { span->Finish();}
1488 ::elt::mal::rethrow_exception(f.get_exception_ptr());
1491 std::unique_ptr<::generated::zpb::exmalif::StdCmds_Return> data(new ::generated::zpb::exmalif::StdCmds_Return());
1495 auto out = new ::generated::zpb::exmalif::StdCmds_Reset_Out();
1497 *out->mutable_exexceptionerr() = **&_ex;
1499 data->set_allocated_reset(out);
1500 if (span) { span->Finish();}
1503 if (span) { span->Finish();}
1505 headerFrame, f.get_exception_ptr());
1509 }
else if (call->has_enable()) {
1510 auto span = std::shared_ptr<::opentracing::Span>();
1511 if (header.has_trace()) {
1512 auto spanUnique = ::elt::mal::util::tracing::createSpan(
1513 "StdCmds::Enable", header.trace(), ::opentracing::ext::span_kind_rpc_server);
1514 span = std::move(spanUnique);
1515 ::elt::mal::util::tracing::ScopeManagerFactory::getScopeManager().activate(span);
1517 auto params_ = call->mutable_enable();
1519 auto serverContext = std::unique_ptr<::elt::mal::rr::ServerContext<std::string>>(
1520 new ::elt::mal::rr::ServerContextZpb<std::string>(m_mal));
1522 ::elt::mal::rr::ServerContextProvider::setInstance<
1523 ::elt::mal::rr::ServerContext<std::string>>(serverContext);
1525 m_entity->Enable().then(m_zpbServer.getExecutor(), [
this, &socket, id, topicIdFrame, headerFrame, params_, span]
1526 (::elt::mal::future<std::string> f) {
1527 if (!f.has_exception()) {
1528 std::unique_ptr<::generated::zpb::exmalif::StdCmds_Return> data(
1529 new ::generated::zpb::exmalif::StdCmds_Return());
1531 auto out = new ::generated::zpb::exmalif::StdCmds_Enable_Out();
1533 out->set_retval(f.get());
1535 data->set_allocated_enable(out);
1536 if (span) { span->Finish();}
1540 ::elt::mal::rethrow_exception(f.get_exception_ptr());
1543 std::unique_ptr<::generated::zpb::exmalif::StdCmds_Return> data(new ::generated::zpb::exmalif::StdCmds_Return());
1547 auto out = new ::generated::zpb::exmalif::StdCmds_Enable_Out();
1549 *out->mutable_exexceptionerr() = **&_ex;
1551 data->set_allocated_enable(out);
1552 if (span) { span->Finish();}
1555 if (span) { span->Finish();}
1557 headerFrame, f.get_exception_ptr());
1561 }
else if (call->has_disable()) {
1562 auto span = std::shared_ptr<::opentracing::Span>();
1563 if (header.has_trace()) {
1564 auto spanUnique = ::elt::mal::util::tracing::createSpan(
1565 "StdCmds::Disable", header.trace(), ::opentracing::ext::span_kind_rpc_server);
1566 span = std::move(spanUnique);
1567 ::elt::mal::util::tracing::ScopeManagerFactory::getScopeManager().activate(span);
1569 auto params_ = call->mutable_disable();
1571 auto serverContext = std::unique_ptr<::elt::mal::rr::ServerContext<std::string>>(
1572 new ::elt::mal::rr::ServerContextZpb<std::string>(m_mal));
1574 ::elt::mal::rr::ServerContextProvider::setInstance<
1575 ::elt::mal::rr::ServerContext<std::string>>(serverContext);
1577 m_entity->Disable().then(m_zpbServer.getExecutor(), [
this, &socket, id, topicIdFrame, headerFrame, params_, span]
1578 (::elt::mal::future<std::string> f) {
1579 if (!f.has_exception()) {
1580 std::unique_ptr<::generated::zpb::exmalif::StdCmds_Return> data(
1581 new ::generated::zpb::exmalif::StdCmds_Return());
1583 auto out = new ::generated::zpb::exmalif::StdCmds_Disable_Out();
1585 out->set_retval(f.get());
1587 data->set_allocated_disable(out);
1588 if (span) { span->Finish();}
1592 ::elt::mal::rethrow_exception(f.get_exception_ptr());
1595 std::unique_ptr<::generated::zpb::exmalif::StdCmds_Return> data(new ::generated::zpb::exmalif::StdCmds_Return());
1599 auto out = new ::generated::zpb::exmalif::StdCmds_Disable_Out();
1601 *out->mutable_exexceptionerr() = **&_ex;
1603 data->set_allocated_disable(out);
1604 if (span) { span->Finish();}
1607 if (span) { span->Finish();}
1609 headerFrame, f.get_exception_ptr());
1613 }
else if (call->has_getstate()) {
1614 auto span = std::shared_ptr<::opentracing::Span>();
1615 if (header.has_trace()) {
1616 auto spanUnique = ::elt::mal::util::tracing::createSpan(
1617 "StdCmds::GetState", header.trace(), ::opentracing::ext::span_kind_rpc_server);
1618 span = std::move(spanUnique);
1619 ::elt::mal::util::tracing::ScopeManagerFactory::getScopeManager().activate(span);
1621 auto params_ = call->mutable_getstate();
1623 auto serverContext = std::unique_ptr<::elt::mal::rr::ServerContext<std::string>>(
1624 new ::elt::mal::rr::ServerContextZpb<std::string>(m_mal));
1626 ::elt::mal::rr::ServerContextProvider::setInstance<
1627 ::elt::mal::rr::ServerContext<std::string>>(serverContext);
1629 m_entity->GetState().then(m_zpbServer.getExecutor(), [
this, &socket, id, topicIdFrame, headerFrame, params_, span]
1630 (::elt::mal::future<std::string> f) {
1631 if (!f.has_exception()) {
1632 std::unique_ptr<::generated::zpb::exmalif::StdCmds_Return> data(
1633 new ::generated::zpb::exmalif::StdCmds_Return());
1635 auto out = new ::generated::zpb::exmalif::StdCmds_GetState_Out();
1637 out->set_retval(f.get());
1639 data->set_allocated_getstate(out);
1640 if (span) { span->Finish();}
1644 ::elt::mal::rethrow_exception(f.get_exception_ptr());
1647 std::unique_ptr<::generated::zpb::exmalif::StdCmds_Return> data(new ::generated::zpb::exmalif::StdCmds_Return());
1651 auto out = new ::generated::zpb::exmalif::StdCmds_GetState_Out();
1653 *out->mutable_exexceptionerr() = **&_ex;
1655 data->set_allocated_getstate(out);
1656 if (span) { span->Finish();}
1659 if (span) { span->Finish();}
1661 headerFrame, f.get_exception_ptr());
1665 }
else if (call->has_getstatus()) {
1666 auto span = std::shared_ptr<::opentracing::Span>();
1667 if (header.has_trace()) {
1668 auto spanUnique = ::elt::mal::util::tracing::createSpan(
1669 "StdCmds::GetStatus", header.trace(), ::opentracing::ext::span_kind_rpc_server);
1670 span = std::move(spanUnique);
1671 ::elt::mal::util::tracing::ScopeManagerFactory::getScopeManager().activate(span);
1673 auto params_ = call->mutable_getstatus();
1675 auto serverContext = std::unique_ptr<::elt::mal::rr::ServerContext<std::string>>(
1676 new ::elt::mal::rr::ServerContextZpb<std::string>(m_mal));
1678 ::elt::mal::rr::ServerContextProvider::setInstance<
1679 ::elt::mal::rr::ServerContext<std::string>>(serverContext);
1681 m_entity->GetStatus().then(m_zpbServer.getExecutor(), [
this, &socket, id, topicIdFrame, headerFrame, params_, span]
1682 (::elt::mal::future<std::string> f) {
1683 if (!f.has_exception()) {
1684 std::unique_ptr<::generated::zpb::exmalif::StdCmds_Return> data(
1685 new ::generated::zpb::exmalif::StdCmds_Return());
1687 auto out = new ::generated::zpb::exmalif::StdCmds_GetStatus_Out();
1689 out->set_retval(f.get());
1691 data->set_allocated_getstatus(out);
1692 if (span) { span->Finish();}
1696 ::elt::mal::rethrow_exception(f.get_exception_ptr());
1699 std::unique_ptr<::generated::zpb::exmalif::StdCmds_Return> data(new ::generated::zpb::exmalif::StdCmds_Return());
1703 auto out = new ::generated::zpb::exmalif::StdCmds_GetStatus_Out();
1705 *out->mutable_exexceptionerr() = **&_ex;
1707 data->set_allocated_getstatus(out);
1708 if (span) { span->Finish();}
1711 if (span) { span->Finish();}
1713 headerFrame, f.get_exception_ptr());
1717 }
else if (call->has_getversion()) {
1718 auto span = std::shared_ptr<::opentracing::Span>();
1719 if (header.has_trace()) {
1720 auto spanUnique = ::elt::mal::util::tracing::createSpan(
1721 "StdCmds::GetVersion", header.trace(), ::opentracing::ext::span_kind_rpc_server);
1722 span = std::move(spanUnique);
1723 ::elt::mal::util::tracing::ScopeManagerFactory::getScopeManager().activate(span);
1725 auto params_ = call->mutable_getversion();
1727 auto serverContext = std::unique_ptr<::elt::mal::rr::ServerContext<std::string>>(
1728 new ::elt::mal::rr::ServerContextZpb<std::string>(m_mal));
1730 ::elt::mal::rr::ServerContextProvider::setInstance<
1731 ::elt::mal::rr::ServerContext<std::string>>(serverContext);
1733 m_entity->GetVersion().then(m_zpbServer.getExecutor(), [
this, &socket, id, topicIdFrame, headerFrame, params_, span]
1734 (::elt::mal::future<std::string> f) {
1735 if (!f.has_exception()) {
1736 std::unique_ptr<::generated::zpb::exmalif::StdCmds_Return> data(
1737 new ::generated::zpb::exmalif::StdCmds_Return());
1739 auto out = new ::generated::zpb::exmalif::StdCmds_GetVersion_Out();
1741 out->set_retval(f.get());
1743 data->set_allocated_getversion(out);
1744 if (span) { span->Finish();}
1748 ::elt::mal::rethrow_exception(f.get_exception_ptr());
1751 std::unique_ptr<::generated::zpb::exmalif::StdCmds_Return> data(new ::generated::zpb::exmalif::StdCmds_Return());
1755 auto out = new ::generated::zpb::exmalif::StdCmds_GetVersion_Out();
1757 *out->mutable_exexceptionerr() = **&_ex;
1759 data->set_allocated_getversion(out);
1760 if (span) { span->Finish();}
1763 if (span) { span->Finish();}
1765 headerFrame, f.get_exception_ptr());
1769 }
else if (call->has_config()) {
1770 auto span = std::shared_ptr<::opentracing::Span>();
1771 if (header.has_trace()) {
1772 auto spanUnique = ::elt::mal::util::tracing::createSpan(
1773 "StdCmds::Config", header.trace(), ::opentracing::ext::span_kind_rpc_server);
1774 span = std::move(spanUnique);
1775 ::elt::mal::util::tracing::ScopeManagerFactory::getScopeManager().activate(span);
1777 auto params_ = call->mutable_config();
1779 auto serverContext = std::unique_ptr<::elt::mal::rr::ServerContext<std::string>>(
1780 new ::elt::mal::rr::ServerContextZpb<std::string>(m_mal));
1782 ::elt::mal::rr::ServerContextProvider::setInstance<
1783 ::elt::mal::rr::ServerContext<std::string>>(serverContext);
1785 m_entity->Config().then(m_zpbServer.getExecutor(), [
this, &socket, id, topicIdFrame, headerFrame, params_, span]
1786 (::elt::mal::future<std::string> f) {
1787 if (!f.has_exception()) {
1788 std::unique_ptr<::generated::zpb::exmalif::StdCmds_Return> data(
1789 new ::generated::zpb::exmalif::StdCmds_Return());
1791 auto out = new ::generated::zpb::exmalif::StdCmds_Config_Out();
1793 out->set_retval(f.get());
1795 data->set_allocated_config(out);
1796 if (span) { span->Finish();}
1800 ::elt::mal::rethrow_exception(f.get_exception_ptr());
1803 std::unique_ptr<::generated::zpb::exmalif::StdCmds_Return> data(new ::generated::zpb::exmalif::StdCmds_Return());
1807 auto out = new ::generated::zpb::exmalif::StdCmds_Config_Out();
1809 *out->mutable_exexceptionerr() = **&_ex;
1811 data->set_allocated_config(out);
1812 if (span) { span->Finish();}
1815 if (span) { span->Finish();}
1817 headerFrame, f.get_exception_ptr());
1821 }
else if (call->has_exit()) {
1822 auto span = std::shared_ptr<::opentracing::Span>();
1823 if (header.has_trace()) {
1824 auto spanUnique = ::elt::mal::util::tracing::createSpan(
1825 "StdCmds::Exit", header.trace(), ::opentracing::ext::span_kind_rpc_server);
1826 span = std::move(spanUnique);
1827 ::elt::mal::util::tracing::ScopeManagerFactory::getScopeManager().activate(span);
1829 auto params_ = call->mutable_exit();
1831 auto serverContext = std::unique_ptr<::elt::mal::rr::ServerContext<std::string>>(
1832 new ::elt::mal::rr::ServerContextZpb<std::string>(m_mal));
1834 ::elt::mal::rr::ServerContextProvider::setInstance<
1835 ::elt::mal::rr::ServerContext<std::string>>(serverContext);
1837 m_entity->Exit().then(m_zpbServer.getExecutor(), [
this, &socket, id, topicIdFrame, headerFrame, params_, span]
1838 (::elt::mal::future<std::string> f) {
1839 if (!f.has_exception()) {
1840 std::unique_ptr<::generated::zpb::exmalif::StdCmds_Return> data(
1841 new ::generated::zpb::exmalif::StdCmds_Return());
1843 auto out = new ::generated::zpb::exmalif::StdCmds_Exit_Out();
1845 out->set_retval(f.get());
1847 data->set_allocated_exit(out);
1848 if (span) { span->Finish();}
1852 ::elt::mal::rethrow_exception(f.get_exception_ptr());
1855 std::unique_ptr<::generated::zpb::exmalif::StdCmds_Return> data(new ::generated::zpb::exmalif::StdCmds_Return());
1859 auto out = new ::generated::zpb::exmalif::StdCmds_Exit_Out();
1861 *out->mutable_exexceptionerr() = **&_ex;
1863 data->set_allocated_exit(out);
1864 if (span) { span->Finish();}
1867 if (span) { span->Finish();}
1869 headerFrame, f.get_exception_ptr());
1873 }
else if (call->has_setloglevel()) {
1874 auto span = std::shared_ptr<::opentracing::Span>();
1875 if (header.has_trace()) {
1876 auto spanUnique = ::elt::mal::util::tracing::createSpan(
1877 "StdCmds::SetLogLevel", header.trace(), ::opentracing::ext::span_kind_rpc_server);
1878 span = std::move(spanUnique);
1879 ::elt::mal::util::tracing::ScopeManagerFactory::getScopeManager().activate(span);
1881 auto params_ = call->mutable_setloglevel();
1883 auto serverContext = std::unique_ptr<::elt::mal::rr::ServerContext<std::string>>(
1884 new ::elt::mal::rr::ServerContextZpb<std::string>(m_mal));
1886 ::elt::mal::rr::ServerContextProvider::setInstance<
1887 ::elt::mal::rr::ServerContext<std::string>>(serverContext);
1889 m_entity->SetLogLevel(std::shared_ptr< ::exmalif::LogInfo>(new ::exmalif::zpb::LogInfoImpl(params_->mutable_info()))).then(m_zpbServer.getExecutor(), [
this, &socket, id, topicIdFrame, headerFrame, params_, span]
1890 (::elt::mal::future<std::string> f) {
1891 if (!f.has_exception()) {
1892 std::unique_ptr<::generated::zpb::exmalif::StdCmds_Return> data(
1893 new ::generated::zpb::exmalif::StdCmds_Return());
1895 auto out = new ::generated::zpb::exmalif::StdCmds_SetLogLevel_Out();
1897 out->set_retval(f.get());
1899 data->set_allocated_setloglevel(out);
1900 if (span) { span->Finish();}
1904 ::elt::mal::rethrow_exception(f.get_exception_ptr());
1907 std::unique_ptr<::generated::zpb::exmalif::StdCmds_Return> data(new ::generated::zpb::exmalif::StdCmds_Return());
1911 auto out = new ::generated::zpb::exmalif::StdCmds_SetLogLevel_Out();
1913 *out->mutable_exexceptionerr() = **&_ex;
1915 data->set_allocated_setloglevel(out);
1916 if (span) { span->Finish();}
1919 if (span) { span->Finish();}
1921 headerFrame, f.get_exception_ptr());
1925 }
else if (call->has_preset()) {
1926 auto span = std::shared_ptr<::opentracing::Span>();
1927 if (header.has_trace()) {
1928 auto spanUnique = ::elt::mal::util::tracing::createSpan(
1929 "StdCmds::Preset", header.trace(), ::opentracing::ext::span_kind_rpc_server);
1930 span = std::move(spanUnique);
1931 ::elt::mal::util::tracing::ScopeManagerFactory::getScopeManager().activate(span);
1933 auto params_ = call->mutable_preset();
1935 auto serverContext = std::unique_ptr<::elt::mal::rr::ServerContext<std::string>>(
1936 new ::elt::mal::rr::ServerContextZpb<std::string>(m_mal));
1938 ::elt::mal::rr::ServerContextProvider::setInstance<
1939 ::elt::mal::rr::ServerContext<std::string>>(serverContext);
1941 m_entity->Preset(std::shared_ptr< ::exmalif::TelPosition>(new ::exmalif::zpb::TelPositionImpl(params_->mutable_pos()))).then(m_zpbServer.getExecutor(), [
this, &socket, id, topicIdFrame, headerFrame, params_, span]
1942 (::elt::mal::future<std::string> f) {
1943 if (!f.has_exception()) {
1944 std::unique_ptr<::generated::zpb::exmalif::StdCmds_Return> data(
1945 new ::generated::zpb::exmalif::StdCmds_Return());
1947 auto out = new ::generated::zpb::exmalif::StdCmds_Preset_Out();
1949 out->set_retval(f.get());
1951 data->set_allocated_preset(out);
1952 if (span) { span->Finish();}
1955 if (span) { span->Finish();}
1960 }
else if (call->has_move()) {
1961 auto span = std::shared_ptr<::opentracing::Span>();
1962 if (header.has_trace()) {
1963 auto spanUnique = ::elt::mal::util::tracing::createSpan(
1964 "StdCmds::Move", header.trace(), ::opentracing::ext::span_kind_rpc_server);
1965 span = std::move(spanUnique);
1966 ::elt::mal::util::tracing::ScopeManagerFactory::getScopeManager().activate(span);
1968 auto params_ = call->mutable_move();
1970 auto serverContext = std::unique_ptr<::elt::mal::rr::ServerContext<std::string>>(
1971 new ::elt::mal::rr::ServerContextZpb<std::string>(m_mal));
1973 ::elt::mal::rr::ServerContextProvider::setInstance<
1974 ::elt::mal::rr::ServerContext<std::string>>(serverContext);
1976 m_entity->Move(std::shared_ptr< ::exmalif::AxesPosition>(new ::exmalif::zpb::AxesPositionImpl(params_->mutable_pos()))).then(m_zpbServer.getExecutor(), [
this, &socket, id, topicIdFrame, headerFrame, params_, span]
1977 (::elt::mal::future<std::string> f) {
1978 if (!f.has_exception()) {
1979 std::unique_ptr<::generated::zpb::exmalif::StdCmds_Return> data(
1980 new ::generated::zpb::exmalif::StdCmds_Return());
1982 auto out = new ::generated::zpb::exmalif::StdCmds_Move_Out();
1984 out->set_retval(f.get());
1986 data->set_allocated_move(out);
1987 if (span) { span->Finish();}
1991 ::elt::mal::rethrow_exception(f.get_exception_ptr());
1994 std::unique_ptr<::generated::zpb::exmalif::StdCmds_Return> data(new ::generated::zpb::exmalif::StdCmds_Return());
1998 auto out = new ::generated::zpb::exmalif::StdCmds_Move_Out();
2000 *out->mutable_exexceptionerr() = **&_ex;
2002 data->set_allocated_move(out);
2003 if (span) { span->Finish();}
2006 if (span) { span->Finish();}
2008 headerFrame, f.get_exception_ptr());
2012 }
else if (call->has_getpresetprogress()) {
2013 auto span = std::shared_ptr<::opentracing::Span>();
2014 if (header.has_trace()) {
2015 auto spanUnique = ::elt::mal::util::tracing::createSpan(
2016 "StdCmds::GetPresetProgress", header.trace(), ::opentracing::ext::span_kind_rpc_server);
2017 span = std::move(spanUnique);
2018 ::elt::mal::util::tracing::ScopeManagerFactory::getScopeManager().activate(span);
2020 auto serverContext = std::unique_ptr<::elt::mal::rr::ServerContext<std::string>>(
2021 new ::elt::mal::rr::ServerContextZpbAmi<std::string,
2024 *
this, socket, id, topicIdFrame, headerFrame, header, m_mal));
2026 ::elt::mal::rr::ServerContextProvider::setInstance<
2027 ::elt::mal::rr::ServerContext<std::string>>(serverContext);
2030 m_entity->GetPresetProgress();
2031 }
catch (std::exception &e) {
2032 auto ami = ::elt::mal::rr::ServerContextProvider::getInstance<
2033 ::elt::mal::rr::ServerContext<float>>().createAmi();
2035 ami->completeExceptionally(e);
2040 std::unique_ptr<::elt::mal::zpb::rr::ReplyHeader> unhandledExReplyHeader(
2041 new ::elt::mal::zpb::rr::ReplyHeader());
2043 unhandledExReplyHeader->set_code(::elt::mal::zpb::rr::CompletionCode::UNKNOWN_OPERATION);
2045 sendReply(socket,
id, topicIdFrame, headerFrame, std::move(unhandledExReplyHeader),
2046 std::unique_ptr<::generated::zpb::exmalif::StdCmds_Return>());
2051 zmq::socket_t &socket,
const std::string &
id,
const std::string &topicIdFrame,
2052 const std::string &headerFrame,
2053 std::unique_ptr<::elt::mal::zpb::rr::ReplyHeader> replyHeader,
2054 std::unique_ptr<::generated::zpb::exmalif::StdCmds_Return> data) {
2063 auto replyStr = reply.SerializeAsString();
2065 m_zpbServer.sendReply(socket,
id, topicIdFrame, headerFrame, replyStr);
2069 zmq::socket_t &socket,
const std::string &
id,
2070 const std::string &topicIdFrame,
const std::string &headerFrame,
2071 std::unique_ptr<::generated::zpb::exmalif::StdCmds_Return> data) {
2072 std::unique_ptr<::elt::mal::zpb::rr::ReplyHeader> completedReplyHeader(
2073 new ::elt::mal::zpb::rr::ReplyHeader());
2075 completedReplyHeader->set_code(::elt::mal::zpb::rr::CompletionCode::COMPLETED);
2077 sendReply(socket,
id, topicIdFrame, headerFrame,
2078 std::move(completedReplyHeader), std::move(data));
2082 zmq::socket_t &socket,
const std::string &
id,
const std::string &topicIdFrame,
2083 const std::string &headerFrame, ::elt::mal::exception_ptr exceptionPtr) {
2084 std::unique_ptr<::elt::mal::zpb::rr::ReplyHeader> unhandledExReplyHeader(
2085 new ::elt::mal::zpb::rr::ReplyHeader());
2087 unhandledExReplyHeader->set_code(::elt::mal::zpb::rr::CompletionCode::UNKNOWN_EXCEPTION);
2089 std::string exceptionMessage =
"Unknown";
2092 ::elt::mal::rethrow_exception(exceptionPtr);
2093 }
catch (std::exception &e) {
2094 exceptionMessage = e.what();
2097 unhandledExReplyHeader->set_exceptionmessage(exceptionMessage);
2099 sendReply(socket,
id, topicIdFrame, headerFrame, std::move(unhandledExReplyHeader),
2100 std::unique_ptr<::generated::zpb::exmalif::StdCmds_Return>());
2104 ::elt::mal::rr::ZpbServer &m_zpbServer;
2105 std::shared_ptr<::exmalif::AsyncStdCmds> m_entity;
2106 const std::shared_ptr<::elt::mal::Mal>& m_mal;
2122 public ::elt::mal::rr::ServerAmi<std::string> {
2125 zmq::socket_t &socket,
2126 const std::string &
id,
2127 const std::string &topicIdFrame,
2128 const std::string &headerFrame,
2129 const ::elt::mal::zpb::rr::ZpbHeader &header) :
2133 m_topicIdFrame(topicIdFrame),
2134 m_headerFrame(headerFrame),
2138 std::unique_ptr<::generated::zpb::exmalif::StdCmds_Return> data(
2139 new ::generated::zpb::exmalif::StdCmds_Return());
2141 std::unique_ptr<::elt::mal::zpb::rr::ReplyHeader> replyHeader(
2142 new ::elt::mal::zpb::rr::ReplyHeader());
2144 replyHeader->set_code(::elt::mal::zpb::rr::CompletionCode::PENDING);
2146 data->mutable_getpresetprogress()->set_retval(status);
2148 m_replier.sendReply(m_socket, m_id, m_topicIdFrame,
2149 m_headerFrame, std::move(replyHeader), std::move(data));
2155 std::unique_ptr<::generated::zpb::exmalif::StdCmds_Return> data(
2156 new ::generated::zpb::exmalif::StdCmds_Return());
2158 m_replier.sendUnhandledExceptionReply(m_socket, m_id, m_topicIdFrame,
2159 m_headerFrame, boost::copy_exception(ex));
2160 m_isCompleted =
true;
2165 std::unique_ptr<::generated::zpb::exmalif::StdCmds_Return> data(
2166 new ::generated::zpb::exmalif::StdCmds_Return());
2168 data->mutable_getpresetprogress()->set_retval(status);
2170 m_replier.sendCompletedReply(m_socket, m_id, m_topicIdFrame,
2171 m_headerFrame, std::move(data));
2173 m_isCompleted =
true;
2178 return m_isCompleted;
2182 return future_type();
2190 zmq::socket_t &m_socket;
2191 const std::string m_id;
2192 const std::string m_topicIdFrame;
2193 const std::string m_headerFrame;
2194 const ::elt::mal::zpb::rr::ZpbHeader m_header;
2195 bool m_isCompleted =
false;