summaryrefslogtreecommitdiff
path: root/src/mongo/db/client_common.h
blob: 1d61f81b5759cda34030c208581c5a3d787b764b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
// client_common.h

/**
*    Copyright (C) 2008 10gen Inc.
*
*    This program is free software: you can redistribute it and/or  modify
*    it under the terms of the GNU Affero General Public License, version 3,
*    as published by the Free Software Foundation.
*
*    This program is distributed in the hope that it will be useful,
*    but WITHOUT ANY WARRANTY; without even the implied warranty of
*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*    GNU Affero General Public License for more details.
*
*    You should have received a copy of the GNU Affero General Public License
*    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

#pragma once

//#include "../pch.h"
//#include "security.h"
#include "../util/net/hostandport.h"

namespace mongo {

    class AuthenticationInfo;
    
    /**
     * this is the base class for Client and ClientInfo
     * Client is for mongod
     * ClientInfo is for mongos
     * They should converge slowly
     * The idea is this has the basic api so that not all code has to be duplicated
     */
    class ClientBasic : boost::noncopyable {
    public:
        virtual ~ClientBasic(){}
        virtual const AuthenticationInfo * getAuthenticationInfo() const = 0;
        virtual AuthenticationInfo * getAuthenticationInfo() = 0;

        virtual bool hasRemote() const = 0;
        virtual HostAndPort getRemote() const = 0;

        static ClientBasic* getCurrent();
    };
}