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
BroadcastServer.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 #ifndef OBJECTQUERYMODEL_BROADCASTSERVER_H
19 #define OBJECTQUERYMODEL_BROADCASTSERVER_H
20 
21 #include "ServerFunctionality.h"
22 #include "Configuration.h"
23 #include <mutex>
24 
25 namespace pdb {
26 
32 
33 public:
35 
38 
39  void registerHandlers(PDBServer& forMe) override; // no-op
40 
60  template <class MsgType, class PayloadType, class ResponseType>
61  void broadcast(Handle<MsgType> broadcastMsg,
62  Handle<Vector<Handle<PayloadType>>> broadCastData,
63  std::vector<std::string> receivers,
64  std::function<void(Handle<ResponseType>, std::string)> successCallBack,
65  std::function<void(std::string, std::string)> errorCallBack =
66  [](std::string errMsg, std::string serverName) { /* no-op */ });
67 
68 private:
75  template <class DataType>
77 
78  std::mutex lock;
79 
80  // Jia added a configuration object as protected member
81 protected:
84  pthread_mutex_t connection_mutex;
85 };
86 }
87 
89 
90 #endif // OBJECTQUERYMODEL_BROADCASTSERVER_H
void registerHandlers(PDBServer &forMe) override
void broadcast(Handle< MsgType > broadcastMsg, Handle< Vector< Handle< PayloadType >>> broadCastData, std::vector< std::string > receivers, std::function< void(Handle< ResponseType >, std::string)> successCallBack, std::function< void(std::string, std::string)> errorCallBack=[](std::string errMsg, std::string serverName){})
Handle< DataType > deepCopy(const Handle< DataType > &original)
shared_ptr< Configuration > ConfigurationPtr
Definition: Configuration.h:89
BroadcastServer(PDBLoggerPtr logger, ConfigurationPtr conf)
pthread_mutex_t connection_mutex
std::shared_ptr< PDBLogger > PDBLoggerPtr
Definition: PDBLogger.h:40
ConfigurationPtr conf