A platform for high-performance distributed tool and library development written in C++. It can be deployed in two different cluster modes: standalone or distributed. API for v0.5.0, released on June 13, 2018.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
ServerFunctionality.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * *
3  * Copyright 2018 Rice University *
4  * *
5  * Licensed under the Apache License, Version 2.0 (the "License"); *
6  * you may not use this file except in compliance with the License. *
7  * 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, software *
12  * distributed under the License is distributed on an "AS IS" BASIS, *
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
14  * See the License for the specific language governing permissions and *
15  * limitations under the License. *
16  * *
17  *****************************************************************************/
18 
19 #ifndef SERVER_FUNCT_H
20 #define SERVER_FUNCT_H
21 
22 #include "PDBServer.h"
23 
24 namespace pdb {
25 
26 // this pure virtual class encapsulates some particular server functionality (catalog client,
27 // catalog server, storage server, etc.).
29 
30 public:
31  // registers any particular handlers that this server needs
32  virtual void registerHandlers(PDBServer& forMe) = 0;
33 
34  // added by Jia, it will be invoked when PDBServer is to be shutdown
35  virtual void cleanup() {}
36 
37  // access a particular functionality on the attached server
38  template <class Functionality>
39  Functionality& getFunctionality() {
40  return parent->getFunctionality<Functionality>();
41  }
42 
43  // remember the server this is attached to
44  void recordServer(PDBServer& recordMe) {
45  parent = &recordMe;
46  }
47 
49  return parent->getWorkerQueue()->getWorker();
50  }
51 
53  return parent->getLogger();
54  }
55 
56 
57 private:
59 };
60 }
61 
62 #endif
Functionality & getFunctionality()
virtual void registerHandlers(PDBServer &forMe)=0
void recordServer(PDBServer &recordMe)
PDBLoggerPtr getLogger()
Definition: PDBServer.cc:233
PDBWorkerQueuePtr getWorkerQueue()
Definition: PDBServer.cc:228
shared_ptr< PDBWorker > PDBWorkerPtr
Definition: PDBWorker.h:40
std::shared_ptr< PDBLogger > PDBLoggerPtr
Definition: PDBLogger.h:40
Functionality & getFunctionality()