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

S
starlord 已提交
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

S
starlord 已提交
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

S
starlord 已提交
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);
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
GrpcRequestHandler::SearchInFiles(::grpc::ServerContext *context,
92 93
                                  const ::milvus::grpc::SearchInFilesParam *request,
                                  ::milvus::grpc::TopKQueryResultList *response) {
K
kun yu 已提交
94

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

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

S
starlord 已提交
116
    BaseTaskPtr task_ptr = DescribeTableTask::Create(request->table_name(), response);
K
kun yu 已提交
117
    ::milvus::grpc::Status grpc_status;
Y
Yu Kun 已提交
118
    GrpcRequestScheduler::ExecTask(task_ptr, &grpc_status);
K
kun yu 已提交
119 120 121 122 123 124
    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 已提交
125
GrpcRequestHandler::CountTable(::grpc::ServerContext *context,
Y
Yu Kun 已提交
126 127
                                     const ::milvus::grpc::TableName *request,
                                     ::milvus::grpc::TableRowCount *response) {
K
kun yu 已提交
128

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 142
GrpcRequestHandler::ShowTables(::grpc::ServerContext *context,
                               const ::milvus::grpc::Command *request,
                               ::grpc::ServerWriter<::milvus::grpc::TableName> *writer) {
K
kun yu 已提交
143

S
starlord 已提交
144
    BaseTaskPtr task_ptr = ShowTablesTask::Create(writer);
K
kun yu 已提交
145
    ::milvus::grpc::Status grpc_status;
Y
Yu Kun 已提交
146
    GrpcRequestScheduler::ExecTask(task_ptr, &grpc_status);
K
kun yu 已提交
147 148 149 150 151 152
    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 已提交
153 154 155
}

::grpc::Status
Y
Yu Kun 已提交
156
GrpcRequestHandler::Cmd(::grpc::ServerContext *context,
Y
Yu Kun 已提交
157
                         const ::milvus::grpc::Command *request,
Y
Yu Kun 已提交
158
                         ::milvus::grpc::StringReply *response) {
K
kun yu 已提交
159

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

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

::grpc::Status
GrpcRequestHandler::DescribeIndex(::grpc::ServerContext *context,
              const ::milvus::grpc::TableName *request,
              ::milvus::grpc::IndexParam *response) {
S
starlord 已提交
198
    BaseTaskPtr task_ptr = DescribeIndexTask::Create(request->table_name(), response);
199 200 201 202 203
    ::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 已提交
204 205 206 207 208 209
}

::grpc::Status
GrpcRequestHandler::DropIndex(::grpc::ServerContext *context,
          const ::milvus::grpc::TableName *request,
          ::milvus::grpc::Status *response) {
210 211 212 213 214 215
    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 已提交
216 217 218
}


Y
Yu Kun 已提交
219
}
K
kun yu 已提交
220 221 222
}
}
}