Newer
Older
/*
* Distributed under the OSI-approved Apache License, Version 2.0. See
* accompanying file Copyright.txt for details.
*
* DataMan.h
*
* Created on: Jun 1, 2017
* Author: Jason Wang wangr1@ornl.gov
*/
#ifndef ADIOS2_TOOLKIT_TRANSPORTMAN_DATAMAN_DATAMAN_H_
#define ADIOS2_TOOLKIT_TRANSPORTMAN_DATAMAN_DATAMAN_H_
#include "adios2/toolkit/transportman/TransportMan.h"
#include <json.hpp>
Wang, Ruonan
committed
#include <thread>
{
namespace transportman
{
class DataMan : public TransportMan
{
public:
DataMan(MPI_Comm mpiComm, const bool debugMode);
virtual ~DataMan() = default;
void OpenWANTransports(const std::string &name, const OpenMode openMode,
const std::vector<Params> ¶metersVector,
const bool profile);
Wang, Ruonan
committed
void WriteWAN(const void *buffer, nlohmann::json jmsg);
Wang, Ruonan
committed
void ReadWAN(void *buffer, nlohmann::json jmsg);
Wang, Ruonan
committed
void SetCallback(std::function<void(const void *, std::string, std::string,
std::string, Dims)>
callback);
Wang, Ruonan
committed
void ReadThread(std::shared_ptr<Transport> trans,
std::shared_ptr<Transport> ctl_trans);
std::vector<std::shared_ptr<Transport>> m_ControlTransports;
std::vector<std::thread> m_ControlThreads;
size_t m_CurrentTransport = 0;
bool m_Listening = false;
std::function<void(const void *, std::string, std::string, std::string,
Dims)>
Wang, Ruonan
committed
m_CallBack = nullptr;
Wang, Ruonan
committed
nlohmann::json m_JMessage;
/** Pick the appropriate default */
Wang, Ruonan
committed
const int m_DefaultPort = 12306;
};
} // end namespace transportman
} // end namespace adios
#endif /* ADIOS2_TOOLKIT_TRANSPORTMAN_DATAMAN_DATAMAN_H_ */