From e473f9eeb0233afcbd38de5de975dea4d131026d Mon Sep 17 00:00:00 2001
From: pans <pans@454eff88-639b-444f-9e54-f578c98de674>
Date: 星期三, 16 八月 2017 15:26:27 +0800
Subject: [PATCH] fix Remote client bug

---
 VisitFace/RtspNativeCodec/app/src/main/cpp/RemoteFuncServer.cpp |  159 ++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 127 insertions(+), 32 deletions(-)

diff --git a/VisitFace/RtspNativeCodec/app/src/main/cpp/RemoteFuncServer.cpp b/VisitFace/RtspNativeCodec/app/src/main/cpp/RemoteFuncServer.cpp
index b768f8a..3c77217 100644
--- a/VisitFace/RtspNativeCodec/app/src/main/cpp/RemoteFuncServer.cpp
+++ b/VisitFace/RtspNativeCodec/app/src/main/cpp/RemoteFuncServer.cpp
@@ -1,32 +1,127 @@
-//
-// Created by pansen on 2017/8/4.
-//
-#include "RemoteFuncServer.h"
-
-RtspFaceDetectClient rtspFaceDetectClient;
-
-const RtspFaceDetectClient& getRtspFaceDetectClient(){
-   return rtspFaceDetectClient;
-}
-
-//#todo
-RtspFaceDetectClient::RtspFaceDetectClient():rpcClient("127.0.0.1",8111),
-                           client(rpcClient.getMain<RtspFaceDetect>())
-{}
-void RtspFaceDetectClient::fireFaceCountListener(int cameraIndex, int faceCount){
-        auto req = client.fireFaceCountListenerRequest();
-        req.setCameraIndex(cameraIndex);
-        req.setFaceCount(faceCount);
-        auto send = req.send();
-        send.wait(rpcClient.getWaitScope());
-}
-
-
-
-//#todo
-::kj::Promise<void> RtspFaceViewImpl::RtspFaceViewImpl() {}
-::kj::Promise<void> RtspFaceViewImpl::~RtspFaceViewImpl(){}
-
-::kj::Promise<void> RtspFaceViewImpl::getFaceList(GetFaceListContext context) override{}
-::kj::Promise<void> RtspFaceViewImpl::getFaceImages(GetFaceImagesContext context) override{}
-::kj::Promise<void> RtspFaceViewImpl::setFaceLabel(SetFaceLabelContext context) override {}
+//
+// Created by pansen on 2017/8/4.
+//
+#include "AppConfig.h"
+#include "RemoteFuncServer.h"
+#include "RemoteFunc.h"
+#include "RtspNativeCodecJNIServer.h"
+
+#include <string>
+#include <iostream>
+using namespace std;
+
+//#todo 淇敼鏈嶅姟绾跨▼鏋勯�犲弬鏁颁紶鍏ユ柟寮�
+RemoteServer<RtspFaceViewImpl> remoteServer("192.168.1.94", 8112);
+//RemoteServer<RtspFaceViewImpl> remoteServer("192.168.1.97", 8112);
+static RtspFaceDetectClient* rtspFaceDetectClient = nullptr;
+
+void startRemoteServer()
+{
+;
+	AppConfig config;
+	config.loadConfig("data/config.cfg");
+    remoteServer.start();
+//    //#todo 璋冪敤浣嶇疆绉诲姩
+//    try
+//    {
+//        RtspFaceDetectClient rtspFaceDetectClient = RtspFaceDetectClient();
+//        RtspFaceDetect::Client& rClient = rtspFaceDetectClient.getClient();
+//
+//        auto& waitScope = rtspFaceDetectClient.getWaitScope();
+//        auto  request = rClient.fireFaceCountListenerRequest();
+//        auto sendAct = request.send();
+//        sendAct.wait(waitScope);
+//    }
+//    catch (const kj::Exception& e)
+//    {
+//        cout << e.getDescription().cStr() << endl;
+//        return;
+//    }
+    //#end
+}
+
+RtspFaceDetectClient * getRtspFaceDetectClient()
+{
+    if(rtspFaceDetectClient == nullptr)
+        rtspFaceDetectClient = new RtspFaceDetectClient;
+    return rtspFaceDetectClient;
+}
+
+//#todo 鏋勯�犲嚱鏁颁慨鏀�
+RtspFaceDetectClient::RtspFaceDetectClient() :
+        rpcClient(nullptr)
+{
+}
+
+RtspFaceDetect::Client* RtspFaceDetectClient::getClient()
+{
+    LOG_INFO << "new client @ " << (int*)client << LOG_ENDL;
+
+    if (client == nullptr) {
+        LOG_INFO << "new client 2" << LOG_ENDL;
+        try
+        {
+            client = new RtspFaceDetect::Client(getEzRpcClient()->getMain<RtspFaceDetect>());
+        }
+        catch (const kj::Exception& e)
+        {
+            LOG_ERROR << "new client error" << LOG_ENDL;
+            delete client;
+            client = nullptr;
+            throw e;
+        }
+    }
+    return client;
+}
+
+::kj::WaitScope &RtspFaceDetectClient::getWaitScope()
+{
+    return getEzRpcClient()->getWaitScope();
+}
+
+capnp::EzRpcClient * RtspFaceDetectClient::getEzRpcClient()
+{
+    if (rpcClient == nullptr) {
+        try
+        {
+            //#todo ip test
+            //rpcClient = new capnp::EzRpcClient("192.168.1.89", 8111);
+            //client
+           rpcClient = new capnp::EzRpcClient("192.168.1.97", 8111);
+        }
+        catch (const kj::Exception& e)
+        {
+            delete rpcClient;
+            rpcClient = nullptr;
+            throw e;
+        }
+    }
+    return rpcClient;
+}
+
+::kj::Promise<void> RtspFaceViewImpl::getFaceList(GetFaceListContext context)
+{
+	auto results = context.getResults();
+	remoteGetFaceList(context.getParams(), results);
+	context.setResults(results);
+    LOG_ERROR <<"getFaceList : !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"<< LOG_ENDL;
+    return kj::READY_NOW;
+}
+
+::kj::Promise<void> RtspFaceViewImpl::getFaceImages(GetFaceImagesContext context)
+{
+	auto results = context.getResults();
+	remoteGetFaceListImage(context.getParams(), results);
+	context.setResults(results);
+    LOG_ERROR <<"getFaceImages : !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"<< LOG_ENDL;
+    return kj::READY_NOW;
+}
+
+::kj::Promise<void> RtspFaceViewImpl::setFaceLabel(SetFaceLabelContext context)
+{
+	auto results = context.getResults();
+	remoteSetFaceLabel(context.getParams(), results);
+	context.setResults(results);
+    LOG_ERROR <<"setFaceLabel : !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"<< LOG_ENDL;
+    return kj::READY_NOW;
+}

--
Gitblit v1.8.0