GrpcRequestHandler.cpp 8.9 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.

S
starlord 已提交
18 19
#include "server/grpc_impl/GrpcRequestHandler.h"
#include "server/grpc_impl/GrpcRequestTask.h"
K
kun yu 已提交
20 21
#include "utils/TimeRecorder.h"

S
starlord 已提交
22 23
#include <vector>

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

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

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

::grpc::Status
S
starlord 已提交
58 59
GrpcRequestHandler::CreateIndex(::grpc::ServerContext* context, const ::milvus::grpc::IndexParam* request,
                                ::milvus::grpc::Status* response) {
S
starlord 已提交
60
    BaseTaskPtr task_ptr = CreateIndexTask::Create(request);
Y
Yu Kun 已提交
61
    GrpcRequestScheduler::ExecTask(task_ptr, response);
K
kun yu 已提交
62 63 64 65
    return ::grpc::Status::OK;
}

::grpc::Status
S
starlord 已提交
66 67
GrpcRequestHandler::Insert(::grpc::ServerContext* context, const ::milvus::grpc::InsertParam* request,
                           ::milvus::grpc::VectorIds* response) {
S
starlord 已提交
68
    BaseTaskPtr task_ptr = InsertTask::Create(request, response);
K
kun yu 已提交
69
    ::milvus::grpc::Status grpc_status;
Y
Yu Kun 已提交
70
    GrpcRequestScheduler::ExecTask(task_ptr, &grpc_status);
K
kun yu 已提交
71 72 73 74 75 76
    response->mutable_status()->set_reason(grpc_status.reason());
    response->mutable_status()->set_error_code(grpc_status.error_code());
    return ::grpc::Status::OK;
}

::grpc::Status
S
starlord 已提交
77 78
GrpcRequestHandler::Search(::grpc::ServerContext* context, const ::milvus::grpc::SearchParam* request,
                           ::milvus::grpc::TopKQueryResultList* response) {
K
kun yu 已提交
79
    std::vector<std::string> file_id_array;
80
    BaseTaskPtr task_ptr = SearchTask::Create(request, file_id_array, response);
K
kun yu 已提交
81
    ::milvus::grpc::Status grpc_status;
Y
Yu Kun 已提交
82
    GrpcRequestScheduler::ExecTask(task_ptr, &grpc_status);
Y
Yu Kun 已提交
83 84 85
    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 已提交
86 87 88
}

::grpc::Status
S
starlord 已提交
89 90
GrpcRequestHandler::SearchInFiles(::grpc::ServerContext* context, const ::milvus::grpc::SearchInFilesParam* request,
                                  ::milvus::grpc::TopKQueryResultList* response) {
K
kun yu 已提交
91
    std::vector<std::string> file_id_array;
92
    for (int i = 0; i < request->file_id_array_size(); i++) {
S
starlord 已提交
93 94
        file_id_array.push_back(request->file_id_array(i));
    }
S
starlord 已提交
95
    ::milvus::grpc::SearchInFilesParam* request_mutable = const_cast<::milvus::grpc::SearchInFilesParam*>(request);
96
    BaseTaskPtr task_ptr = SearchTask::Create(request_mutable->mutable_search_param(), file_id_array, response);
K
kun yu 已提交
97
    ::milvus::grpc::Status grpc_status;
Y
Yu Kun 已提交
98
    GrpcRequestScheduler::ExecTask(task_ptr, &grpc_status);
Y
Yu Kun 已提交
99 100 101
    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 已提交
102 103 104
}

::grpc::Status
S
starlord 已提交
105 106
GrpcRequestHandler::DescribeTable(::grpc::ServerContext* context, const ::milvus::grpc::TableName* request,
                                  ::milvus::grpc::TableSchema* response) {
S
starlord 已提交
107
    BaseTaskPtr task_ptr = DescribeTableTask::Create(request->table_name(), response);
K
kun yu 已提交
108
    ::milvus::grpc::Status grpc_status;
Y
Yu Kun 已提交
109
    GrpcRequestScheduler::ExecTask(task_ptr, &grpc_status);
110 111
    response->mutable_status()->set_error_code(grpc_status.error_code());
    response->mutable_status()->set_reason(grpc_status.reason());
K
kun yu 已提交
112 113 114 115
    return ::grpc::Status::OK;
}

::grpc::Status
S
starlord 已提交
116 117
GrpcRequestHandler::CountTable(::grpc::ServerContext* context, const ::milvus::grpc::TableName* request,
                               ::milvus::grpc::TableRowCount* response) {
K
kun yu 已提交
118
    int64_t row_count = 0;
Y
Yu Kun 已提交
119
    BaseTaskPtr task_ptr = CountTableTask::Create(request->table_name(), row_count);
K
kun yu 已提交
120
    ::milvus::grpc::Status grpc_status;
Y
Yu Kun 已提交
121
    GrpcRequestScheduler::ExecTask(task_ptr, &grpc_status);
K
kun yu 已提交
122 123 124 125 126 127 128
    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
S
starlord 已提交
129 130
GrpcRequestHandler::ShowTables(::grpc::ServerContext* context, const ::milvus::grpc::Command* request,
                               ::milvus::grpc::TableNameList* response) {
131
    BaseTaskPtr task_ptr = ShowTablesTask::Create(response);
K
kun yu 已提交
132
    ::milvus::grpc::Status grpc_status;
Y
Yu Kun 已提交
133
    GrpcRequestScheduler::ExecTask(task_ptr, &grpc_status);
134 135 136
    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 已提交
137 138 139
}

::grpc::Status
S
starlord 已提交
140 141
GrpcRequestHandler::Cmd(::grpc::ServerContext* context, const ::milvus::grpc::Command* request,
                        ::milvus::grpc::StringReply* response) {
K
kun yu 已提交
142
    std::string result;
Y
Yu Kun 已提交
143
    BaseTaskPtr task_ptr = CmdTask::Create(request->cmd(), result);
K
kun yu 已提交
144
    ::milvus::grpc::Status grpc_status;
Y
Yu Kun 已提交
145
    GrpcRequestScheduler::ExecTask(task_ptr, &grpc_status);
Y
Yu Kun 已提交
146
    response->set_string_reply(result);
K
kun yu 已提交
147 148 149 150 151
    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 已提交
152
::grpc::Status
S
starlord 已提交
153 154
GrpcRequestHandler::DeleteByRange(::grpc::ServerContext* context, const ::milvus::grpc::DeleteByRangeParam* request,
                                  ::milvus::grpc::Status* response) {
S
starlord 已提交
155
    BaseTaskPtr task_ptr = DeleteByRangeTask::Create(request);
156 157 158 159 160
    ::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 已提交
161 162 163
}

::grpc::Status
S
starlord 已提交
164 165
GrpcRequestHandler::PreloadTable(::grpc::ServerContext* context, const ::milvus::grpc::TableName* request,
                                 ::milvus::grpc::Status* response) {
Y
Yu Kun 已提交
166 167 168 169 170 171
    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 已提交
172 173 174
}

::grpc::Status
S
starlord 已提交
175 176
GrpcRequestHandler::DescribeIndex(::grpc::ServerContext* context, const ::milvus::grpc::TableName* request,
                                  ::milvus::grpc::IndexParam* response) {
S
starlord 已提交
177
    BaseTaskPtr task_ptr = DescribeIndexTask::Create(request->table_name(), response);
178 179
    ::milvus::grpc::Status grpc_status;
    GrpcRequestScheduler::ExecTask(task_ptr, &grpc_status);
180 181
    response->mutable_status()->set_reason(grpc_status.reason());
    response->mutable_status()->set_error_code(grpc_status.error_code());
182
    return ::grpc::Status::OK;
Y
Yu Kun 已提交
183 184 185
}

::grpc::Status
S
starlord 已提交
186 187
GrpcRequestHandler::DropIndex(::grpc::ServerContext* context, const ::milvus::grpc::TableName* request,
                              ::milvus::grpc::Status* response) {
188 189 190 191 192 193
    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 已提交
194 195
}

S
starlord 已提交
196 197 198
}  // namespace grpc
}  // namespace server
}  // namespace milvus