GrpcRequestHandler.cpp 8.7 KB
Newer Older
K
kun yu 已提交
1
/*******************************************************************************
Y
Yu Kun 已提交
2 3 4 5
* Copyright 上海赜睿信息科技有限公司(Zilliz) - All Rights Reserved
* Unauthorized copying of this file, via any medium is strictly prohibited.
* Proprietary and confidential.
******************************************************************************/
K
kun yu 已提交
6

Y
Yu Kun 已提交
7 8
#include "GrpcRequestHandler.h"
#include "GrpcRequestTask.h"
K
kun yu 已提交
9 10 11 12 13
#include "utils/TimeRecorder.h"

namespace zilliz {
namespace milvus {
namespace server {
Y
Yu Kun 已提交
14
namespace grpc {
K
kun yu 已提交
15 16

::grpc::Status
Y
Yu Kun 已提交
17 18 19
GrpcRequestHandler::CreateTable(::grpc::ServerContext *context,
                                const ::milvus::grpc::TableSchema *request,
                                ::milvus::grpc::Status *response) {
K
kun yu 已提交
20

K
kun yu 已提交
21
    BaseTaskPtr task_ptr = CreateTableTask::Create(*request);
Y
Yu Kun 已提交
22
    GrpcRequestScheduler::ExecTask(task_ptr, response);
K
kun yu 已提交
23 24 25 26
    return ::grpc::Status::OK;
}

::grpc::Status
Y
Yu Kun 已提交
27 28 29
GrpcRequestHandler::HasTable(::grpc::ServerContext *context,
                             const ::milvus::grpc::TableName *request,
                             ::milvus::grpc::BoolReply *response) {
K
kun yu 已提交
30

K
kun yu 已提交
31 32
    bool has_table = false;
    BaseTaskPtr task_ptr = HasTableTask::Create(request->table_name(), has_table);
K
kun yu 已提交
33
    ::milvus::grpc::Status grpc_status;
Y
Yu Kun 已提交
34
    GrpcRequestScheduler::ExecTask(task_ptr, &grpc_status);
K
kun yu 已提交
35 36 37 38 39 40 41
    response->set_bool_reply(has_table);
    response->mutable_status()->set_reason(grpc_status.reason());
    response->mutable_status()->set_error_code(grpc_status.error_code());
    return ::grpc::Status::OK;
}

::grpc::Status
Y
Yu Kun 已提交
42 43 44
GrpcRequestHandler::DropTable(::grpc::ServerContext *context,
                              const ::milvus::grpc::TableName *request,
                              ::milvus::grpc::Status *response) {
K
kun yu 已提交
45
    BaseTaskPtr task_ptr = DropTableTask::Create(request->table_name());
Y
Yu Kun 已提交
46
    GrpcRequestScheduler::ExecTask(task_ptr, response);
K
kun yu 已提交
47 48 49 50
    return ::grpc::Status::OK;
}

::grpc::Status
Y
Yu Kun 已提交
51 52
GrpcRequestHandler::CreateIndex(::grpc::ServerContext *context,
                               const ::milvus::grpc::IndexParam *request,
Y
Yu Kun 已提交
53
                               ::milvus::grpc::Status *response) {
K
kun yu 已提交
54

Y
Yu Kun 已提交
55
    BaseTaskPtr task_ptr = CreateIndexTask::Create(*request);
Y
Yu Kun 已提交
56
    GrpcRequestScheduler::ExecTask(task_ptr, response);
K
kun yu 已提交
57 58 59 60
    return ::grpc::Status::OK;
}

::grpc::Status
Y
Yu Kun 已提交
61 62
GrpcRequestHandler::Insert(::grpc::ServerContext *context,
                                 const ::milvus::grpc::InsertParam *request,
Y
Yu Kun 已提交
63
                                 ::milvus::grpc::VectorIds *response) {
K
kun yu 已提交
64

Y
Yu Kun 已提交
65
    BaseTaskPtr task_ptr = InsertTask::Create(*request, *response);
K
kun yu 已提交
66
    ::milvus::grpc::Status grpc_status;
Y
Yu Kun 已提交
67
    GrpcRequestScheduler::ExecTask(task_ptr, &grpc_status);
K
kun yu 已提交
68 69 70 71 72 73
    response->mutable_status()->set_reason(grpc_status.reason());
    response->mutable_status()->set_error_code(grpc_status.error_code());
    return ::grpc::Status::OK;
}

::grpc::Status
Y
Yu Kun 已提交
74 75
GrpcRequestHandler::Search(::grpc::ServerContext *context,
                                 const ::milvus::grpc::SearchParam *request,
Y
Yu Kun 已提交
76
                                 ::grpc::ServerWriter<::milvus::grpc::TopKQueryResult> *writer) {
K
kun yu 已提交
77

K
kun yu 已提交
78
    std::vector<std::string> file_id_array;
Y
Yu Kun 已提交
79
    BaseTaskPtr task_ptr = SearchTask::Create(*request, file_id_array, *writer);
K
kun yu 已提交
80
    ::milvus::grpc::Status grpc_status;
Y
Yu Kun 已提交
81
    GrpcRequestScheduler::ExecTask(task_ptr, &grpc_status);
K
kun yu 已提交
82 83 84 85 86 87
    if (grpc_status.error_code() != SERVER_SUCCESS) {
        ::grpc::Status status(::grpc::INVALID_ARGUMENT, grpc_status.reason());
        return status;
    } else {
        return ::grpc::Status::OK;
    }
K
kun yu 已提交
88 89 90
}

::grpc::Status
Y
Yu Kun 已提交
91 92
GrpcRequestHandler::SearchInFiles(::grpc::ServerContext *context,
                                        const ::milvus::grpc::SearchInFilesParam *request,
Y
Yu Kun 已提交
93
                                        ::grpc::ServerWriter<::milvus::grpc::TopKQueryResult> *writer) {
K
kun yu 已提交
94

K
kun yu 已提交
95
    std::vector<std::string> file_id_array;
Y
Yu Kun 已提交
96
    BaseTaskPtr task_ptr = SearchTask::Create(request->search_param(), file_id_array, *writer);
K
kun yu 已提交
97
    ::milvus::grpc::Status grpc_status;
Y
Yu Kun 已提交
98
    GrpcRequestScheduler::ExecTask(task_ptr, &grpc_status);
K
kun yu 已提交
99 100 101 102 103 104
    if (grpc_status.error_code() != SERVER_SUCCESS) {
        ::grpc::Status status(::grpc::INVALID_ARGUMENT, grpc_status.reason());
        return status;
    } else {
        return ::grpc::Status::OK;
    }
K
kun yu 已提交
105 106 107
}

::grpc::Status
Y
Yu Kun 已提交
108 109 110
GrpcRequestHandler::DescribeTable(::grpc::ServerContext *context,
                                  const ::milvus::grpc::TableName *request,
                                  ::milvus::grpc::TableSchema *response) {
K
kun yu 已提交
111 112

    BaseTaskPtr task_ptr = DescribeTableTask::Create(request->table_name(), *response);
K
kun yu 已提交
113
    ::milvus::grpc::Status grpc_status;
Y
Yu Kun 已提交
114
    GrpcRequestScheduler::ExecTask(task_ptr, &grpc_status);
K
kun yu 已提交
115 116 117 118 119 120
    response->mutable_table_name()->mutable_status()->set_error_code(grpc_status.error_code());
    response->mutable_table_name()->mutable_status()->set_reason(grpc_status.reason());
    return ::grpc::Status::OK;
}

::grpc::Status
Y
Yu Kun 已提交
121
GrpcRequestHandler::CountTable(::grpc::ServerContext *context,
Y
Yu Kun 已提交
122 123
                                     const ::milvus::grpc::TableName *request,
                                     ::milvus::grpc::TableRowCount *response) {
K
kun yu 已提交
124

K
kun yu 已提交
125
    int64_t row_count = 0;
Y
Yu Kun 已提交
126
    BaseTaskPtr task_ptr = CountTableTask::Create(request->table_name(), row_count);
K
kun yu 已提交
127
    ::milvus::grpc::Status grpc_status;
Y
Yu Kun 已提交
128
    GrpcRequestScheduler::ExecTask(task_ptr, &grpc_status);
K
kun yu 已提交
129 130 131 132 133 134 135
    response->set_table_row_count(row_count);
    response->mutable_status()->set_reason(grpc_status.reason());
    response->mutable_status()->set_error_code(grpc_status.error_code());
    return ::grpc::Status::OK;
}

::grpc::Status
Y
Yu Kun 已提交
136 137 138
GrpcRequestHandler::ShowTables(::grpc::ServerContext *context,
                               const ::milvus::grpc::Command *request,
                               ::grpc::ServerWriter<::milvus::grpc::TableName> *writer) {
K
kun yu 已提交
139

K
kun yu 已提交
140
    BaseTaskPtr task_ptr = ShowTablesTask::Create(*writer);
K
kun yu 已提交
141
    ::milvus::grpc::Status grpc_status;
Y
Yu Kun 已提交
142
    GrpcRequestScheduler::ExecTask(task_ptr, &grpc_status);
K
kun yu 已提交
143 144 145 146 147 148
    if (grpc_status.error_code() != SERVER_SUCCESS) {
        ::grpc::Status status(::grpc::UNKNOWN, grpc_status.reason());
        return status;
    } else {
        return ::grpc::Status::OK;
    }
K
kun yu 已提交
149 150 151
}

::grpc::Status
Y
Yu Kun 已提交
152
GrpcRequestHandler::Cmd(::grpc::ServerContext *context,
Y
Yu Kun 已提交
153
                         const ::milvus::grpc::Command *request,
Y
Yu Kun 已提交
154
                         ::milvus::grpc::StringReply *response) {
K
kun yu 已提交
155

K
kun yu 已提交
156
    std::string result;
Y
Yu Kun 已提交
157
    BaseTaskPtr task_ptr = CmdTask::Create(request->cmd(), result);
K
kun yu 已提交
158
    ::milvus::grpc::Status grpc_status;
Y
Yu Kun 已提交
159
    GrpcRequestScheduler::ExecTask(task_ptr, &grpc_status);
Y
Yu Kun 已提交
160
    response->set_string_reply(result);
K
kun yu 已提交
161 162 163 164 165
    response->mutable_status()->set_reason(grpc_status.reason());
    response->mutable_status()->set_error_code(grpc_status.error_code());
    return ::grpc::Status::OK;
}

Y
Yu Kun 已提交
166 167 168 169
::grpc::Status
GrpcRequestHandler::DeleteByRange(::grpc::ServerContext *context,
              const ::milvus::grpc::DeleteByRangeParam *request,
              ::milvus::grpc::Status *response) {
170 171 172 173 174 175
    BaseTaskPtr task_ptr = DeleteByRangeTask::Create(*request);
    ::milvus::grpc::Status grpc_status;
    GrpcRequestScheduler::ExecTask(task_ptr, &grpc_status);
    response->set_error_code(grpc_status.error_code());
    response->set_reason(grpc_status.reason());
    return ::grpc::Status::OK;
Y
Yu Kun 已提交
176 177 178 179 180 181
}

::grpc::Status
GrpcRequestHandler::PreloadTable(::grpc::ServerContext *context,
             const ::milvus::grpc::TableName *request,
             ::milvus::grpc::Status *response) {
Y
Yu Kun 已提交
182 183 184 185 186 187
    BaseTaskPtr task_ptr = PreloadTableTask::Create(request->table_name());
    ::milvus::grpc::Status grpc_status;
    GrpcRequestScheduler::ExecTask(task_ptr, &grpc_status);
    response->set_reason(grpc_status.reason());
    response->set_error_code(grpc_status.error_code());
    return ::grpc::Status::OK;
Y
Yu Kun 已提交
188 189 190 191 192 193
}

::grpc::Status
GrpcRequestHandler::DescribeIndex(::grpc::ServerContext *context,
              const ::milvus::grpc::TableName *request,
              ::milvus::grpc::IndexParam *response) {
194 195 196 197 198 199
    BaseTaskPtr task_ptr = DescribeIndexTask::Create(request->table_name(), *response);
    ::milvus::grpc::Status grpc_status;
    GrpcRequestScheduler::ExecTask(task_ptr, &grpc_status);
    response->mutable_table_name()->mutable_status()->set_reason(grpc_status.reason());
    response->mutable_table_name()->mutable_status()->set_error_code(grpc_status.error_code());
    return ::grpc::Status::OK;
Y
Yu Kun 已提交
200 201 202 203 204 205
}

::grpc::Status
GrpcRequestHandler::DropIndex(::grpc::ServerContext *context,
          const ::milvus::grpc::TableName *request,
          ::milvus::grpc::Status *response) {
206 207 208 209 210 211
    BaseTaskPtr task_ptr = DropIndexTask::Create(request->table_name());
    ::milvus::grpc::Status grpc_status;
    GrpcRequestScheduler::ExecTask(task_ptr, &grpc_status);
    response->set_reason(grpc_status.reason());
    response->set_error_code(grpc_status.error_code());
    return ::grpc::Status::OK;
Y
Yu Kun 已提交
212 213 214
}


Y
Yu Kun 已提交
215
}
K
kun yu 已提交
216 217 218
}
}
}