Coverage Report

Created: 2024-11-21 10:56

/root/doris/be/src/common/utils.h
Line
Count
Source (jump to first uncovered line)
1
// Licensed to the Apache Software Foundation (ASF) under one
2
// or more contributor license agreements.  See the NOTICE file
3
// distributed with this work for additional information
4
// regarding copyright ownership.  The ASF licenses this file
5
// to you under the Apache License, Version 2.0 (the
6
// "License"); you may not use this file except in compliance
7
// with the License.  You may obtain a copy of the License at
8
//
9
//   http://www.apache.org/licenses/LICENSE-2.0
10
//
11
// Unless required by applicable law or agreed to in writing,
12
// software distributed under the License is distributed on an
13
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
// KIND, either express or implied.  See the License for the
15
// specific language governing permissions and limitations
16
// under the License.
17
18
#pragma once
19
20
#include <string>
21
22
namespace doris {
23
24
#ifndef ARRAY_SIZE
25
#define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]))
26
#endif
27
28
struct AuthInfo {
29
    std::string user;
30
    std::string passwd;
31
    std::string cluster;
32
    std::string user_ip;
33
    // -1 as unset
34
    int64_t auth_code = -1; // deprecated
35
    std::string token;
36
};
37
38
template <class T>
39
1
void set_request_auth(T* req, const AuthInfo& auth) {
40
1
    req->user = auth.user; // always set user, because it may be used by FE
41
    // auth code is deprecated and should be removed in 3.1
42
1
    if (auth.auth_code != -1) {
43
        // if auth_code is set, no need to set other info
44
1
        req->__set_auth_code(auth.auth_code);
45
        // user name and passwd is unused, but they are required field.
46
        // so they have to be set.
47
1
        req->passwd = "";
48
1
    } else if (auth.token != "") {
49
0
        req->__isset.token = true;
50
0
        req->token = auth.token;
51
0
    } else {
52
0
        req->passwd = auth.passwd;
53
0
        if (!auth.cluster.empty()) {
54
0
            req->__set_cluster(auth.cluster);
55
0
        }
56
0
        req->__set_user_ip(auth.user_ip);
57
0
    }
58
1
}
Unexecuted instantiation: _ZN5doris16set_request_authINS_20TLoadTxnBeginRequestEEEvPT_RKNS_8AuthInfoE
Unexecuted instantiation: _ZN5doris16set_request_authINS_18TLoadTxn2PCRequestEEEvPT_RKNS_8AuthInfoE
_ZN5doris16set_request_authINS_21TLoadTxnCommitRequestEEEvPT_RKNS_8AuthInfoE
Line
Count
Source
39
1
void set_request_auth(T* req, const AuthInfo& auth) {
40
1
    req->user = auth.user; // always set user, because it may be used by FE
41
    // auth code is deprecated and should be removed in 3.1
42
1
    if (auth.auth_code != -1) {
43
        // if auth_code is set, no need to set other info
44
1
        req->__set_auth_code(auth.auth_code);
45
        // user name and passwd is unused, but they are required field.
46
        // so they have to be set.
47
1
        req->passwd = "";
48
1
    } else if (auth.token != "") {
49
0
        req->__isset.token = true;
50
0
        req->token = auth.token;
51
0
    } else {
52
0
        req->passwd = auth.passwd;
53
0
        if (!auth.cluster.empty()) {
54
0
            req->__set_cluster(auth.cluster);
55
0
        }
56
0
        req->__set_user_ip(auth.user_ip);
57
0
    }
58
1
}
Unexecuted instantiation: _ZN5doris16set_request_authINS_23TLoadTxnRollbackRequestEEEvPT_RKNS_8AuthInfoE
Unexecuted instantiation: _ZN5doris16set_request_authINS_21TStreamLoadPutRequestEEEvPT_RKNS_8AuthInfoE
59
60
// This is the threshold used to periodically release the memory occupied by the expression.
61
// RELEASE_CONTEXT_COUNTER should be power of 2
62
// GCC will optimize the modulo operation to &(release_context_counter - 1)
63
// _conjunct_ctxs will free local alloc after this probe calculations
64
static constexpr int RELEASE_CONTEXT_COUNTER = 1 << 7;
65
static_assert((RELEASE_CONTEXT_COUNTER & (RELEASE_CONTEXT_COUNTER - 1)) == 0,
66
              "should be power of 2");
67
68
template <typename To, typename From>
69
To convert_to(From from) {
70
    union {
71
        From _from;
72
        To _to;
73
    };
74
    _from = from;
75
    return _to;
76
}
77
78
} // namespace doris