GrpcRequestHandler.cpp 9.4 KB
Newer Older
J
jinhai 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements.  See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership.  The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License.  You may obtain a copy of the License at
//
//   http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied.  See the License for the
// specific language governing permissions and limitations
// under the License.

K
kun yu 已提交
18

G
groot 已提交
19 20
#include "server/grpc_impl/GrpcRequestHandler.h"
#include "server/grpc_impl/GrpcRequestTask.h"
K
kun yu 已提交
21 22
#include "utils/TimeRecorder.h"

G
groot 已提交
23 24
#include <vector>

K
kun yu 已提交
25 26 27
namespace zilliz {
namespace milvus {
namespace server {
Y
Yu Kun 已提交
28
namespace grpc {
K
kun yu 已提交
29 30

::grpc::Status
Y
Yu Kun 已提交
31 32 33
GrpcRequestHandler::CreateTable(::grpc::ServerContext *context,
                                const ::milvus::grpc::TableSchema *request,
                                ::milvus::grpc::Status *response) {
G
groot 已提交
34
    BaseTaskPtr task_ptr = CreateTableTask::Create(request);
Y
Yu Kun 已提交
35
    GrpcRequestScheduler::ExecTask(task_ptr, response);
K
kun yu 已提交
36 37 38 39
    return ::grpc::Status::OK;
}

::grpc::Status
Y
Yu Kun 已提交
40 41 42
GrpcRequestHandler::HasTable(::grpc::ServerContext *context,
                             const ::milvus::grpc::TableName *request,
                             ::milvus::grpc::BoolReply *response) {
K
kun yu 已提交
43 44
    bool has_table = false;
    BaseTaskPtr task_ptr = HasTableTask::Create(request->table_name(), has_table);
K
kun yu 已提交
45
    ::milvus::grpc::Status grpc_status;
Y
Yu Kun 已提交
46
    GrpcRequestScheduler::ExecTask(task_ptr, &grpc_status);
K
kun yu 已提交
47 48 49 50 51 52 53
    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 已提交
54 55 56
GrpcRequestHandler::DropTable(::grpc::ServerContext *context,
                              const ::milvus::grpc::TableName *request,
                              ::milvus::grpc::Status *response) {
K
kun yu 已提交
57
    BaseTaskPtr task_ptr = DropTableTask::Create(request->table_name());
Y
Yu Kun 已提交
58
    GrpcRequestScheduler::ExecTask(task_ptr, response);
K
kun yu 已提交
59 60 61 62
    return ::grpc::Status::OK;
}

::grpc::Status
Y
Yu Kun 已提交
63
GrpcRequestHandler::CreateIndex(::grpc::ServerContext *context,
G
groot 已提交
64 65
                                const ::milvus::grpc::IndexParam *request,
                                ::milvus::grpc::Status *response) {
G
groot 已提交
66
    BaseTaskPtr task_ptr = CreateIndexTask::Create(request);
Y
Yu Kun 已提交
67
    GrpcRequestScheduler::ExecTask(task_ptr, response);
K
kun yu 已提交
68 69 70 71
    return ::grpc::Status::OK;
}

::grpc::Status
Y
Yu Kun 已提交
72
GrpcRequestHandler::Insert(::grpc::ServerContext *context,
G
groot 已提交
73 74
                           const ::milvus::grpc::InsertParam *request,
                           ::milvus::grpc::VectorIds *response) {
G
groot 已提交
75
    BaseTaskPtr task_ptr = InsertTask::Create(request, response);
K
kun yu 已提交
76
    ::milvus::grpc::Status grpc_status;
Y
Yu Kun 已提交
77
    GrpcRequestScheduler::ExecTask(task_ptr, &grpc_status);
K
kun yu 已提交
78 79 80 81 82 83
    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 已提交
84
GrpcRequestHandler::Search(::grpc::ServerContext *context,
85 86
                           const ::milvus::grpc::SearchParam *request,
                           ::milvus::grpc::TopKQueryResultList *response) {
K
kun yu 已提交
87
    std::vector<std::string> file_id_array;
88
    BaseTaskPtr task_ptr = SearchTask::Create(request, file_id_array, response);
K
kun yu 已提交
89
    ::milvus::grpc::Status grpc_status;
Y
Yu Kun 已提交
90
    GrpcRequestScheduler::ExecTask(task_ptr, &grpc_status);
Y
Yu Kun 已提交
91 92 93
    response->mutable_status()->set_error_code(grpc_status.error_code());
    response->mutable_status()->set_reason(grpc_status.reason());
    return ::grpc::Status::OK;
K
kun yu 已提交
94 95 96
}

::grpc::Status
Y
Yu Kun 已提交
97
GrpcRequestHandler::SearchInFiles(::grpc::ServerContext *context,
98 99
                                  const ::milvus::grpc::SearchInFilesParam *request,
                                  ::milvus::grpc::TopKQueryResultList *response) {
K
kun yu 已提交
100
    std::vector<std::string> file_id_array;
101
    for (int i = 0; i < request->file_id_array_size(); i++) {
G
groot 已提交
102 103 104
        file_id_array.push_back(request->file_id_array(i));
    }
    ::milvus::grpc::SearchInFilesParam *request_mutable = const_cast<::milvus::grpc::SearchInFilesParam *>(request);
105
    BaseTaskPtr task_ptr = SearchTask::Create(request_mutable->mutable_search_param(), file_id_array, response);
K
kun yu 已提交
106
    ::milvus::grpc::Status grpc_status;
Y
Yu Kun 已提交
107
    GrpcRequestScheduler::ExecTask(task_ptr, &grpc_status);
Y
Yu Kun 已提交
108 109 110
    response->mutable_status()->set_error_code(grpc_status.error_code());
    response->mutable_status()->set_reason(grpc_status.reason());
    return ::grpc::Status::OK;
K
kun yu 已提交
111 112 113
}

::grpc::Status
Y
Yu Kun 已提交
114 115 116
GrpcRequestHandler::DescribeTable(::grpc::ServerContext *context,
                                  const ::milvus::grpc::TableName *request,
                                  ::milvus::grpc::TableSchema *response) {
G
groot 已提交
117
    BaseTaskPtr task_ptr = DescribeTableTask::Create(request->table_name(), response);
K
kun yu 已提交
118
    ::milvus::grpc::Status grpc_status;
Y
Yu Kun 已提交
119
    GrpcRequestScheduler::ExecTask(task_ptr, &grpc_status);
120 121
    response->mutable_status()->set_error_code(grpc_status.error_code());
    response->mutable_status()->set_reason(grpc_status.reason());
K
kun yu 已提交
122 123 124 125
    return ::grpc::Status::OK;
}

::grpc::Status
Y
Yu Kun 已提交
126
GrpcRequestHandler::CountTable(::grpc::ServerContext *context,
G
groot 已提交
127 128
                               const ::milvus::grpc::TableName *request,
                               ::milvus::grpc::TableRowCount *response) {
K
kun yu 已提交
129
    int64_t row_count = 0;
Y
Yu Kun 已提交
130
    BaseTaskPtr task_ptr = CountTableTask::Create(request->table_name(), row_count);
K
kun yu 已提交
131
    ::milvus::grpc::Status grpc_status;
Y
Yu Kun 已提交
132
    GrpcRequestScheduler::ExecTask(task_ptr, &grpc_status);
K
kun yu 已提交
133 134 135 136 137 138 139
    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 已提交
140 141
GrpcRequestHandler::ShowTables(::grpc::ServerContext *context,
                               const ::milvus::grpc::Command *request,
142 143
                               ::milvus::grpc::TableNameList *response) {
    BaseTaskPtr task_ptr = ShowTablesTask::Create(response);
K
kun yu 已提交
144
    ::milvus::grpc::Status grpc_status;
Y
Yu Kun 已提交
145
    GrpcRequestScheduler::ExecTask(task_ptr, &grpc_status);
146 147 148
    response->mutable_status()->set_error_code(grpc_status.error_code());
    response->mutable_status()->set_reason(grpc_status.reason());
    return ::grpc::Status::OK;
K
kun yu 已提交
149 150 151
}

::grpc::Status
Y
Yu Kun 已提交
152
GrpcRequestHandler::Cmd(::grpc::ServerContext *context,
G
groot 已提交
153 154
                        const ::milvus::grpc::Command *request,
                        ::milvus::grpc::StringReply *response) {
K
kun yu 已提交
155
    std::string result;
Y
Yu Kun 已提交
156
    BaseTaskPtr task_ptr = CmdTask::Create(request->cmd(), result);
K
kun yu 已提交
157
    ::milvus::grpc::Status grpc_status;
Y
Yu Kun 已提交
158
    GrpcRequestScheduler::ExecTask(task_ptr, &grpc_status);
Y
Yu Kun 已提交
159
    response->set_string_reply(result);
K
kun yu 已提交
160 161 162 163 164
    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 已提交
165 166
::grpc::Status
GrpcRequestHandler::DeleteByRange(::grpc::ServerContext *context,
G
groot 已提交
167 168
                                  const ::milvus::grpc::DeleteByRangeParam *request,
                                  ::milvus::grpc::Status *response) {
G
groot 已提交
169
    BaseTaskPtr task_ptr = DeleteByRangeTask::Create(request);
170 171 172 173 174
    ::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 已提交
175 176 177 178
}

::grpc::Status
GrpcRequestHandler::PreloadTable(::grpc::ServerContext *context,
G
groot 已提交
179 180
                                 const ::milvus::grpc::TableName *request,
                                 ::milvus::grpc::Status *response) {
Y
Yu Kun 已提交
181 182 183 184 185 186
    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 已提交
187 188 189 190
}

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

::grpc::Status
GrpcRequestHandler::DropIndex(::grpc::ServerContext *context,
G
groot 已提交
203 204
                              const ::milvus::grpc::TableName *request,
                              ::milvus::grpc::Status *response) {
205 206 207 208 209 210
    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 已提交
211 212
}

G
groot 已提交
213 214 215 216
} // namespace grpc
} // namespace server
} // namespace milvus
} // namespace zilliz