GrpcRequestTask.h 7.7 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
#pragma once
Y
Yu Kun 已提交
19
#include "GrpcRequestScheduler.h"
G
groot 已提交
20
#include "utils/Status.h"
K
kun yu 已提交
21 22 23 24 25 26 27 28 29 30 31
#include "db/Types.h"

#include "milvus.grpc.pb.h"
#include "status.pb.h"

#include <condition_variable>
#include <memory>

namespace zilliz {
namespace milvus {
namespace server {
Y
Yu Kun 已提交
32
namespace grpc {
K
kun yu 已提交
33 34

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Y
Yu Kun 已提交
35
class CreateTableTask : public GrpcBaseTask {
K
kun yu 已提交
36
public:
Y
Yu Kun 已提交
37
    static BaseTaskPtr
G
groot 已提交
38
    Create(const ::milvus::grpc::TableSchema *schema);
K
kun yu 已提交
39 40

protected:
Y
Yu Kun 已提交
41
    explicit
G
groot 已提交
42
    CreateTableTask(const ::milvus::grpc::TableSchema *request);
K
kun yu 已提交
43

G
groot 已提交
44
    Status
Y
Yu Kun 已提交
45
    OnExecute() override;
K
kun yu 已提交
46 47

private:
G
groot 已提交
48
    const ::milvus::grpc::TableSchema *schema_;
K
kun yu 已提交
49 50 51
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Y
Yu Kun 已提交
52
class HasTableTask : public GrpcBaseTask {
K
kun yu 已提交
53
public:
Y
Yu Kun 已提交
54
    static BaseTaskPtr
Y
Yu Kun 已提交
55
    Create(const std::string &table_name, bool &has_table);
K
kun yu 已提交
56 57

protected:
Y
Yu Kun 已提交
58
    HasTableTask(const std::string &request, bool &has_table);
K
kun yu 已提交
59

G
groot 已提交
60
    Status
Y
Yu Kun 已提交
61
    OnExecute() override;
K
kun yu 已提交
62 63 64 65


private:
    std::string table_name_;
Y
Yu Kun 已提交
66
    bool &has_table_;
K
kun yu 已提交
67 68 69
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Y
Yu Kun 已提交
70
class DescribeTableTask : public GrpcBaseTask {
K
kun yu 已提交
71
public:
Y
Yu Kun 已提交
72
    static BaseTaskPtr
G
groot 已提交
73
    Create(const std::string &table_name, ::milvus::grpc::TableSchema *schema);
K
kun yu 已提交
74 75

protected:
G
groot 已提交
76
    DescribeTableTask(const std::string &table_name, ::milvus::grpc::TableSchema *schema);
K
kun yu 已提交
77

G
groot 已提交
78
    Status
Y
Yu Kun 已提交
79
    OnExecute() override;
K
kun yu 已提交
80 81 82 83


private:
    std::string table_name_;
G
groot 已提交
84
    ::milvus::grpc::TableSchema *schema_;
K
kun yu 已提交
85 86 87
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Y
Yu Kun 已提交
88
class DropTableTask : public GrpcBaseTask {
K
kun yu 已提交
89
public:
Y
Yu Kun 已提交
90
    static BaseTaskPtr
Y
Yu Kun 已提交
91
    Create(const std::string &table_name);
K
kun yu 已提交
92 93

protected:
Y
Yu Kun 已提交
94
    explicit
Y
Yu Kun 已提交
95
    DropTableTask(const std::string &table_name);
K
kun yu 已提交
96

G
groot 已提交
97
    Status
Y
Yu Kun 已提交
98
    OnExecute() override;
K
kun yu 已提交
99 100 101 102 103 104 105


private:
    std::string table_name_;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Y
Yu Kun 已提交
106
class CreateIndexTask : public GrpcBaseTask {
K
kun yu 已提交
107
public:
Y
Yu Kun 已提交
108
    static BaseTaskPtr
G
groot 已提交
109
    Create(const ::milvus::grpc::IndexParam *index_Param);
K
kun yu 已提交
110 111

protected:
Y
Yu Kun 已提交
112
    explicit
G
groot 已提交
113
    CreateIndexTask(const ::milvus::grpc::IndexParam *index_Param);
K
kun yu 已提交
114

G
groot 已提交
115
    Status
Y
Yu Kun 已提交
116
    OnExecute() override;
K
kun yu 已提交
117 118 119


private:
G
groot 已提交
120
    const ::milvus::grpc::IndexParam *index_param_;
K
kun yu 已提交
121 122 123
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Y
Yu Kun 已提交
124
class ShowTablesTask : public GrpcBaseTask {
K
kun yu 已提交
125
public:
Y
Yu Kun 已提交
126
    static BaseTaskPtr
G
groot 已提交
127
    Create(::grpc::ServerWriter<::milvus::grpc::TableName> *writer);
K
kun yu 已提交
128 129

protected:
Y
Yu Kun 已提交
130
    explicit
G
groot 已提交
131
    ShowTablesTask(::grpc::ServerWriter<::milvus::grpc::TableName> *writer);
K
kun yu 已提交
132

G
groot 已提交
133
    Status
Y
Yu Kun 已提交
134
    OnExecute() override;
K
kun yu 已提交
135 136

private:
G
groot 已提交
137
    ::grpc::ServerWriter<::milvus::grpc::TableName> *writer_;
K
kun yu 已提交
138 139 140
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Y
Yu Kun 已提交
141
class InsertTask : public GrpcBaseTask {
K
kun yu 已提交
142
public:
Y
Yu Kun 已提交
143
    static BaseTaskPtr
G
groot 已提交
144 145
    Create(const ::milvus::grpc::InsertParam *insert_Param,
           ::milvus::grpc::VectorIds *record_ids_);
K
kun yu 已提交
146 147

protected:
G
groot 已提交
148 149
    InsertTask(const ::milvus::grpc::InsertParam *insert_Param,
                     ::milvus::grpc::VectorIds *record_ids_);
K
kun yu 已提交
150

G
groot 已提交
151
    Status
Y
Yu Kun 已提交
152
    OnExecute() override;
K
kun yu 已提交
153 154

private:
G
groot 已提交
155 156
    const ::milvus::grpc::InsertParam *insert_param_;
    ::milvus::grpc::VectorIds *record_ids_;
K
kun yu 已提交
157 158 159
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Y
Yu Kun 已提交
160
class SearchTask : public GrpcBaseTask {
K
kun yu 已提交
161
public:
Y
Yu Kun 已提交
162
    static BaseTaskPtr
G
groot 已提交
163
    Create(const ::milvus::grpc::SearchParam *search_param,
Y
Yu Kun 已提交
164
           const std::vector<std::string> &file_id_array,
165
           ::milvus::grpc::TopKQueryResultList *response);
K
kun yu 已提交
166 167

protected:
G
groot 已提交
168
    SearchTask(const ::milvus::grpc::SearchParam *search_param,
169 170
               const std::vector<std::string> &file_id_array,
               ::milvus::grpc::TopKQueryResultList *response);
K
kun yu 已提交
171

G
groot 已提交
172
    Status
Y
Yu Kun 已提交
173
    OnExecute() override;
K
kun yu 已提交
174 175

private:
G
groot 已提交
176
    const ::milvus::grpc::SearchParam *search_param_;
K
kun yu 已提交
177
    std::vector<std::string> file_id_array_;
178
    ::milvus::grpc::TopKQueryResultList *topk_result_list;
K
kun yu 已提交
179 180 181
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Y
Yu Kun 已提交
182
class CountTableTask : public GrpcBaseTask {
K
kun yu 已提交
183
public:
Y
Yu Kun 已提交
184
    static BaseTaskPtr
Y
Yu Kun 已提交
185
    Create(const std::string &table_name, int64_t &row_count);
K
kun yu 已提交
186 187

protected:
Y
Yu Kun 已提交
188
    CountTableTask(const std::string &table_name, int64_t &row_count);
K
kun yu 已提交
189

G
groot 已提交
190
    Status
Y
Yu Kun 已提交
191
    OnExecute() override;
K
kun yu 已提交
192 193 194

private:
    std::string table_name_;
Y
Yu Kun 已提交
195
    int64_t &row_count_;
K
kun yu 已提交
196 197 198
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Y
Yu Kun 已提交
199
class CmdTask : public GrpcBaseTask {
K
kun yu 已提交
200
public:
Y
Yu Kun 已提交
201
    static BaseTaskPtr
Y
Yu Kun 已提交
202
    Create(const std::string &cmd, std::string &result);
K
kun yu 已提交
203 204

protected:
Y
Yu Kun 已提交
205
    CmdTask(const std::string &cmd, std::string &result);
K
kun yu 已提交
206

G
groot 已提交
207
    Status
Y
Yu Kun 已提交
208
    OnExecute() override;
K
kun yu 已提交
209 210 211

private:
    std::string cmd_;
Y
Yu Kun 已提交
212
    std::string &result_;
K
kun yu 已提交
213
};
Y
Yu Kun 已提交
214 215 216 217 218

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
class DeleteByRangeTask : public GrpcBaseTask {
public:
    static BaseTaskPtr
G
groot 已提交
219
    Create(const ::milvus::grpc::DeleteByRangeParam *delete_by_range_param);
Y
Yu Kun 已提交
220 221

protected:
G
groot 已提交
222
    DeleteByRangeTask(const ::milvus::grpc::DeleteByRangeParam *delete_by_range_param);
Y
Yu Kun 已提交
223

G
groot 已提交
224
    Status
Y
Yu Kun 已提交
225 226 227
    OnExecute() override;

private:
G
groot 已提交
228
    const ::milvus::grpc::DeleteByRangeParam *delete_by_range_param_;
Y
Yu Kun 已提交
229 230 231 232 233 234 235 236 237 238 239
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
class PreloadTableTask : public GrpcBaseTask {
public:
    static BaseTaskPtr
    Create(const std::string &table_name);

protected:
    PreloadTableTask(const std::string &table_name);

G
groot 已提交
240
    Status
Y
Yu Kun 已提交
241 242 243 244 245 246 247 248 249 250 251
    OnExecute() override;

private:
    std::string table_name_;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
class DescribeIndexTask : public GrpcBaseTask {
public:
    static BaseTaskPtr
    Create(const std::string &table_name,
G
groot 已提交
252
            ::milvus::grpc::IndexParam *index_param);
Y
Yu Kun 已提交
253 254 255

protected:
    DescribeIndexTask(const std::string &table_name,
G
groot 已提交
256
            ::milvus::grpc::IndexParam *index_param);
Y
Yu Kun 已提交
257

G
groot 已提交
258
    Status
Y
Yu Kun 已提交
259 260 261 262
    OnExecute() override;

private:
    std::string table_name_;
G
groot 已提交
263
    ::milvus::grpc::IndexParam *index_param_;
Y
Yu Kun 已提交
264 265 266 267 268 269 270 271 272 273 274
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
class DropIndexTask : public GrpcBaseTask {
public:
    static BaseTaskPtr
    Create(const std::string &table_name);

protected:
    DropIndexTask(const std::string &table_name);

G
groot 已提交
275
    Status
276 277
    OnExecute() override;

Y
Yu Kun 已提交
278 279 280 281 282
private:
    std::string table_name_;

};

Y
Yu Kun 已提交
283
}
K
kun yu 已提交
284 285 286
}
}
}