wangzhengquan
2020-06-12 114c53f58d535d9fab158ed669646a0aae5f078a
commit
2个文件已删除
1 文件已重命名
6个文件已修改
207 ■■■■ 已修改文件
.gitignore 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
README.md 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
README.mk 补丁 | 查看 | 原始文档 | blame | 历史
device/hcnetdisk.c 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/client 补丁 | 查看 | 原始文档 | blame | 历史
service/netdisk_service 补丁 | 查看 | 原始文档 | blame | 历史
service/netdisk_service.c 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service/request_handler.c 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
消息体定义.md 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.gitignore
@@ -33,3 +33,4 @@
*.tar
*.tar.gz
.vscode/
build/
README.md
@@ -1,96 +0,0 @@
## é€†è¡Œç®—法调用说明
### 1. ä»£ç è°ƒç”¨
```
 /**
 * ç¬¬ä¸€ä¸ªå‚æ•°@points  ç»„成观测区域的彼此相邻的点
 * ç¬¬äºŒä¸ªå‚æ•°@_keepTime ä¿æŒæ—¶é—´
 * ç¬¬ä¸‰ä¸ªå‚æ•°@_direction æ­£ç¡®è¡Œè¿›çš„æ–¹å‘方向
 */
IndirectAlg indirectAlg((std::initializer_list<Point>){{0.0, 0.0}, {1000.0, 0.0},  {1000.0, 1000.0}, {0.0, 1000.0} }, 5, {1, 1});
//因为数据时流数据,下面的调用应该时在一个循环里面,处理完一条接着处理下一条
//构建传入的数据
Record record;
record.id = 1; //目标ID
record.timestamp = time(0); //时间戳
record.coordinate = {2.0, 3.0}; // åæ ‡
//判断是否逆行
indirectAlg.isRetrograde(record)
```
### 2 æµ‹è¯•用例
test_right_walk2.c
```test_right_walk2.c
#include <usg_common.h>        /* cos */
#include <graph.h>
#include <IndirectAlg.h>
using namespace std;
int test2() {
    // IndirectAlg indirectAlg({  {{0.0, 0.0}, {1000.0, 0.0}}, {{1000.0, 0.0}, {1000.0, 1000.0}}, {{1000.0, 1000.0}, {0.0, 1000.0}}, {{0.0, 1000.0}, {0.0, 0.0}} }, 5, {1, 1});
    /**
     * ç¬¬ä¸€ä¸ªå‚æ•°@points  ç»„成观测区域的彼此相邻的点
     * ç¬¬äºŒä¸ªå‚æ•°@_keepTime ä¿æŒæ—¶é—´
     * ç¬¬ä¸‰ä¸ªå‚æ•°@_direction æ­£ç¡®è¡Œè¿›çš„æ–¹å‘方向
     */
    IndirectAlg indirectAlg((std::initializer_list<Point>){{0.0, 0.0}, {1000.0, 0.0},  {1000.0, 1000.0}, {0.0, 1000.0} }, 5, {1, 1});
    int i = 0;
    // time_t start_time;
    srand((unsigned) time(0));
    double rx, ry;
    bool isRetrograde;
    //起点
    Point start = {0, 0};
    //传入的流数据记录信息Record
    Record record;
    record.id = 1; //目标ID
    record.timestamp = time(0); //时间戳
    record.coordinate = start; // åæ ‡
    // time(&start_time);
    //判断是否逆行
    while(!(isRetrograde = indirectAlg.isRetrograde(record)) ) {
        rx = ((double)(rand()%10))/100000;
        ry = ((double)(rand()%10))/100000;
        //std::cout << timestamp << ":" <<  << "isRetrograde" << isRetrograde;
       // err_msg(0, "%ld : {%f, %f}  %d\n", record.timestamp, record.coordinate.x, record.coordinate.y, isRetrograde);
        record.timestamp = time(0);
        //if (difftime(time(0), start_time) > 1)
        if (i > 10)
        {
            record.coordinate = {record.coordinate.x - rx , record.coordinate.y - ry};
        } else {
            record.coordinate = {record.coordinate.x + rx , record.coordinate.y + ry};
        }
        if (i > 100)
            break;
        sleep(1);
        i++;
    }
    printf("return %ld : {%f, %f}  %d\n", record.timestamp, record.coordinate.x, record.coordinate.y, isRetrograde);
    return 0;
}
int main() {
    test2();
}
```
### 3 ç¼–译
安装好so包后,用如下的方式编译,alg是逆行算法包,usgcommon是算法用的的公共包,pthread是系统的线程包
```
g++  -std=c++11  test_right_walk2.c -o test_right_walk2  -lalg  -lusgcommon -lpthread
```
README.mk
device/hcnetdisk.c
@@ -118,7 +118,7 @@
             request.channel, 
             mktime(&start), 
             i);
        // printf("%s\n", destfile);
        if(downloadByTime_wrapper(userid, request.channel, &start, &end, destfile) != -1) {
      if(files != NULL) {
        files->push_back(destfile);
service/client
Binary files differ
service/netdisk_service
Binary files differ
service/netdisk_service.c
@@ -96,18 +96,30 @@
  }
 
  Json::Value response;
  Json::Value payload;
  response["code"] = rv;
  response["msg"] = rmsg;
  // Json::Value response;
  // Json::Value payload;
  // response["code"] = rv;
  // response["msg"] = rmsg;
  // Json::Value filelist;
  // for(std::string f : files) {
  //   filelist.append(f);
  // }
  // payload["filelist"] = filelist;
  // response["payload"] = payload;
  Json::Value request;
  request["method"] = "downloadByTimeCallBack";
  Json::Value arguments;
  Json::Value filelist;
  for(std::string f : files) {
    filelist.append(f);
  }
  payload["filelist"] = filelist;
  response["payload"] = payload;
  std::string str = response.toStyledString();
  arguments["fileList"] = filelist;
  arguments["loginUUID"] = drequest.loginUUID;
  request["arguments"] = arguments;
  std::string str = request.toStyledString();
  std::cout << "download finished, call back" << std::endl;
  std::cout << str << std::endl;
service/request_handler.c
@@ -179,10 +179,10 @@
int handleDownloadByTimeAsync(nng_socket sock, Json::Value request) {
std::cout << "accepted handleDownloadByTime request" << std::endl;
std::cout << "received downloadByTime request" << std::endl;
  int rv;
  char rmsg[MAXLINE];
  strcpy(rmsg, "received");
  strcpy(rmsg, "received downloadByTime request");
  // char *buf;
  
  Json::Value arguments = request["arguments"];
ÏûÏ¢Ì嶨Òå.md
File was renamed from message_define.md
@@ -30,6 +30,7 @@
```
{
    code: 0, // 0表示成功,其他值代表相应的错误码
    msg: "success", //成功或其他错误信息
    payload: {
        loginUUID: "11111"
    }
@@ -40,6 +41,7 @@
## 2、下载
请求体
```
{
@@ -72,49 +74,56 @@
     
}
```
下载采用异步的方式。视频服务收到请求后立即返回一个响应表示收到了请求,但并不表示下载完成。
响应体
```
{
    code: 0, // 0表示成功,其他值代表相应的错误码
    payload: {
    msg: "success", //成功或其他错误信息
    payload: {
    }
}
```
视频服务完成下载后回调对方的服务,告诉对方下载完成,并把下载完成的文件列表发送给对方。 è¿™æ—¶è§†é¢‘服务是作为请求方。
请求体
```
{
    method: "downloadByTimeCallBack",
    arguments: {
        //完成下载的文件的列表
        filelist: [
        fileList: [
            "/Downloads/1.mp3",
            "/Downloads/2.mp3",
            "/Downloads/3.mp3"
        ]
    }
}
```
## 3. ç™»å‡º
请求体
```
{
    method: "logout",
    arguments: {
        loginUUID: "1"
    }
}
```
对方要返回一个响应,表示接受到了。
响应体
```
{
    code: 0 // 0表示成功,其他值代表相应的错误码
    code: 0, // 0表示成功,其他值代表相应的错误码
    msg: "success", //成功或其他错误信息
    payload: {
    }
    
}
```
## 4. èŽ·å–èµ·å§‹é€šé“å·
## 3. èŽ·å–è®¾å¤‡ä¿¡æ¯
请求体
```
{
    method: "getStartChannel",
    method: "getDeviceInfo",
    arguments: {
        loginUUID: "1"
    }
@@ -127,33 +136,14 @@
```
{
    code: 0, // 0表示成功,其他值代表相应的错误码
    msg: "success", //成功或其他错误信息
    payload: {
        startChanel: 1
        deviceInfo: {
            startChannel: 1,      //起始通道号
            maxChannels: 64       //最大通道数
        }
    }
    
}
```
## 5. èŽ·å–æœ€å¤§é€šé“å·
请求体
```
{
    method: "getMaxChannels",
    arguments: {
        loginUUID: "1"
    }
}
```
响应体
```
{
    code: 0, // 0表示成功,其他值代表相应的错误码
    payload: {
        maxChanel: 64
    }
}
```