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

G
groot 已提交
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

G
groot 已提交
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

G
groot 已提交
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
GrpcRequestHandler::Search(::grpc::ServerContext *context,
75 76
                           const ::milvus::grpc::SearchParam *request,
                           ::milvus::grpc::TopKQueryResultList *response) {
K
kun yu 已提交
77

K
kun yu 已提交
78
    std::vector<std::string> file_id_array;
79
    BaseTaskPtr task_ptr = SearchTask::Create(request, file_id_array, response);
K
kun yu 已提交
80
    ::milvus::grpc::Status grpc_status;
Y
Yu Kun 已提交
81
    GrpcRequestScheduler::ExecTask(task_ptr, &grpc_status);
Y
Yu Kun 已提交
82 83 84
    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 已提交
85 86 87
}

::grpc::Status
Y
Yu Kun 已提交
88
GrpcRequestHandler::SearchInFiles(::grpc::ServerContext *context,
89 90
                                  const ::milvus::grpc::SearchInFilesParam *request,
                                  ::milvus::grpc::TopKQueryResultList *response) {
K
kun yu 已提交
91

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

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

G
groot 已提交
110
    BaseTaskPtr task_ptr = DescribeTableTask::Create(request->table_name(), response);
K
kun yu 已提交
111
    ::milvus::grpc::Status grpc_status;
Y
Yu Kun 已提交
112
    GrpcRequestScheduler::ExecTask(task_ptr, &grpc_status);
K
kun yu 已提交
113 114 115 116 117 118
    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 已提交
119
GrpcRequestHandler::CountTable(::grpc::ServerContext *context,
Y
Yu Kun 已提交
120 121
                                     const ::milvus::grpc::TableName *request,
                                     ::milvus::grpc::TableRowCount *response) {
K
kun yu 已提交
122

K
kun yu 已提交
123
    int64_t row_count = 0;
Y
Yu Kun 已提交
124
    BaseTaskPtr task_ptr = CountTableTask::Create(request->table_name(), row_count);
K
kun yu 已提交
125
    ::milvus::grpc::Status grpc_status;
Y
Yu Kun 已提交
126
    GrpcRequestScheduler::ExecTask(task_ptr, &grpc_status);
K
kun yu 已提交
127 128 129 130 131 132 133
    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 已提交
134 135 136
GrpcRequestHandler::ShowTables(::grpc::ServerContext *context,
                               const ::milvus::grpc::Command *request,
                               ::grpc::ServerWriter<::milvus::grpc::TableName> *writer) {
K
kun yu 已提交
137

G
groot 已提交
138
    BaseTaskPtr task_ptr = ShowTablesTask::Create(writer);
K
kun yu 已提交
139
    ::milvus::grpc::Status grpc_status;
Y
Yu Kun 已提交
140
    GrpcRequestScheduler::ExecTask(task_ptr, &grpc_status);
K
kun yu 已提交
141 142 143 144 145 146
    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 已提交
147 148 149
}

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

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

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

::grpc::Status
GrpcRequestHandler::DescribeIndex(::grpc::ServerContext *context,
              const ::milvus::grpc::TableName *request,
              ::milvus::grpc::IndexParam *response) {
G
groot 已提交
192
    BaseTaskPtr task_ptr = DescribeIndexTask::Create(request->table_name(), response);
193 194 195 196 197
    ::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 已提交
198 199 200 201 202 203
}

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


Y
Yu Kun 已提交
213
}
K
kun yu 已提交
214 215 216
}
}
}