RequestHandler.cpp 5.7 KB
Newer Older
K
kun yu 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
/*******************************************************************************
 * Copyright 上海赜睿信息科技有限公司(Zilliz) - All Rights Reserved
 * Unauthorized copying of this file, via any medium is strictly prohibited.
 * Proprietary and confidential.
 ******************************************************************************/

#include "RequestHandler.h"
#include "RequestTask.h"
#include "utils/TimeRecorder.h"

namespace zilliz {
namespace milvus {
namespace server {

::grpc::Status
K
kun yu 已提交
16
RequestHandler::CreateTable(::grpc::ServerContext *context, const ::milvus::grpc::TableSchema *request, ::milvus::grpc::Status *response) {
K
kun yu 已提交
17 18 19 20 21 22 23 24 25
    BaseTaskPtr task_ptr = CreateTableTask::Create(*request);
    RequestScheduler::ExecTask(task_ptr, response);
    return ::grpc::Status::OK;
}

::grpc::Status
RequestHandler::HasTable(::grpc::ServerContext *context, const ::milvus::grpc::TableName *request, ::milvus::grpc::BoolReply *response) {
    bool has_table = false;
    BaseTaskPtr task_ptr = HasTableTask::Create(request->table_name(), has_table);
K
kun yu 已提交
26
    ::milvus::grpc::Status grpc_status;
K
kun yu 已提交
27 28 29 30 31 32 33 34
    RequestScheduler::ExecTask(task_ptr, &grpc_status);
    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
K
kun yu 已提交
35
RequestHandler::DropTable(::grpc::ServerContext* context, const ::milvus::grpc::TableName* request, ::milvus::grpc::Status* response) {
K
kun yu 已提交
36 37 38 39 40 41
    BaseTaskPtr task_ptr = DropTableTask::Create(request->table_name());
    RequestScheduler::ExecTask(task_ptr, response);
    return ::grpc::Status::OK;
}

::grpc::Status
K
kun yu 已提交
42
RequestHandler::BuildIndex(::grpc::ServerContext* context, const ::milvus::grpc::TableName* request, ::milvus::grpc::Status* response) {
K
kun yu 已提交
43 44 45 46 47 48 49 50
    BaseTaskPtr task_ptr = BuildIndexTask::Create(request->table_name());
    RequestScheduler::ExecTask(task_ptr, response);
    return ::grpc::Status::OK;
}

::grpc::Status
RequestHandler::InsertVector(::grpc::ServerContext* context, const ::milvus::grpc::InsertInfos* request, ::milvus::grpc::VectorIds* response) {
    BaseTaskPtr task_ptr = InsertVectorTask::Create(*request, *response);
K
kun yu 已提交
51
    ::milvus::grpc::Status grpc_status;
K
kun yu 已提交
52 53 54 55 56 57 58 59 60 61
    RequestScheduler::ExecTask(task_ptr, &grpc_status);
    response->mutable_status()->set_reason(grpc_status.reason());
    response->mutable_status()->set_error_code(grpc_status.error_code());
    return ::grpc::Status::OK;
}

::grpc::Status
RequestHandler::SearchVector(::grpc::ServerContext* context, const ::milvus::grpc::SearchVectorInfos* request, ::grpc::ServerWriter<::milvus::grpc::TopKQueryResult>* writer) {
    std::vector<std::string> file_id_array;
    BaseTaskPtr task_ptr = SearchVectorTask::Create(*request, file_id_array, *writer);
K
kun yu 已提交
62 63 64 65 66 67 68 69
    ::milvus::grpc::Status grpc_status;
    RequestScheduler::ExecTask(task_ptr, &grpc_status);
    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 已提交
70 71 72 73 74 75 76 77 78 79 80 81 82
}

::grpc::Status
RequestHandler::SearchVectorInFiles(::grpc::ServerContext* context, const ::milvus::grpc::SearchVectorInFilesInfos* request, ::grpc::ServerWriter<::milvus::grpc::TopKQueryResult>* writer) {
    std::vector<std::string> file_id_array;
    BaseTaskPtr task_ptr = SearchVectorTask::Create(request->search_vector_infos(), file_id_array, *writer);
    RequestScheduler::ExecTask(task_ptr, nullptr);
    return ::grpc::Status::OK;
}

::grpc::Status
RequestHandler::DescribeTable(::grpc::ServerContext* context, const ::milvus::grpc::TableName* request, ::milvus::grpc::TableSchema* response) {
    BaseTaskPtr task_ptr = DescribeTableTask::Create(request->table_name(), response);
K
kun yu 已提交
83
    ::milvus::grpc::Status grpc_status;
K
kun yu 已提交
84 85 86 87 88 89 90 91 92 93
    RequestScheduler::ExecTask(task_ptr, &grpc_status);
    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
RequestHandler::GetTableRowCount(::grpc::ServerContext* context, const ::milvus::grpc::TableName* request, ::milvus::grpc::TableRowCount* response) {
    int64_t row_count = 0;
    BaseTaskPtr task_ptr = GetTableRowCountTask::Create(request->table_name(), row_count);
K
kun yu 已提交
94
    ::milvus::grpc::Status grpc_status;
K
kun yu 已提交
95 96 97 98 99 100 101 102 103 104
    RequestScheduler::ExecTask(task_ptr, &grpc_status);
    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
RequestHandler::ShowTables(::grpc::ServerContext* context, const ::milvus::grpc::Command* request, ::grpc::ServerWriter< ::milvus::grpc::TableName>* writer) {
    BaseTaskPtr task_ptr = ShowTablesTask::Create(*writer);
K
kun yu 已提交
105 106 107 108 109 110 111 112
    ::milvus::grpc::Status grpc_status;
    RequestScheduler::ExecTask(task_ptr, &grpc_status);
    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 已提交
113 114 115 116 117 118
}

::grpc::Status
RequestHandler::Ping(::grpc::ServerContext* context, const ::milvus::grpc::Command* request, ::milvus::grpc::ServerStatus* response) {
    std::string result;
    BaseTaskPtr task_ptr = PingTask::Create(request->cmd(), result);
K
kun yu 已提交
119
    ::milvus::grpc::Status grpc_status;
K
kun yu 已提交
120 121 122 123 124 125 126 127 128 129 130
    RequestScheduler::ExecTask(task_ptr, &grpc_status);
    response->set_info(result);
    response->mutable_status()->set_reason(grpc_status.reason());
    response->mutable_status()->set_error_code(grpc_status.error_code());
    return ::grpc::Status::OK;
}


}
}
}