32#ifndef WOSS_MANAGER_DEFINITIONS_H
33#define WOSS_MANAGER_DEFINITIONS_H
35#if defined (WOSS_MULTITHREAD)
40#include <shared_mutex>
41#include <condition_variable>
66 using SimFreq = std::pair< double, double >;
109 virtual std::shared_ptr<Woss>
getActiveWoss(
const CoordZ& tx,
const CoordZ& rx,
double start_frequency,
double end_frequency );
130 virtual std::unique_ptr<Pressure>
getWossPressure(
const CoordZ& tx_coordz,
const CoordZ& rx_coordz,
double start_frequency,
double end_frequency,
const Time& time_value ) = 0;
141 virtual std::unique_ptr<Pressure>
getWossPressure(
const CoordZ& tx_coordz,
const CoordZ& rx_coordz,
double start_frequency,
double end_frequency,
double time_value = 0.0 );
172 virtual std::unique_ptr<TimeArr>
getWossTimeArr(
const CoordZ& tx_coordz,
const CoordZ& rx_coordz,
double start_frequency,
double end_frequency,
const Time& time_value ) = 0;
183 virtual std::unique_ptr<TimeArr>
getWossTimeArr(
const CoordZ& tx_coordz,
const CoordZ& rx_coordz,
double start_frequency,
double end_frequency,
double time_value = 0.0 );
259 virtual std::shared_ptr<Woss>
getWoss(
const CoordZ& tx,
const CoordZ& rx,
double start_frequency,
double end_frequency ) = 0;
287 virtual std::unique_ptr<Pressure>
getWossPressure(
const CoordZ& tx_coordz,
const CoordZ& rx_coordz,
double start_frequency,
double end_frequency,
const Time& time_value )
override;
298 virtual std::unique_ptr<TimeArr>
getWossTimeArr(
const CoordZ& tx_coordz,
const CoordZ& rx_coordz,
double start_frequency,
double end_frequency,
const Time& time_value )
override;
362 woss_db_manager->insertTimeArr( tx, rx, frequency, time_value, channel ) ;
367 return(
woss_db_manager->getTimeArr( tx, rx, frequency, time_value ) );
373 woss_db_manager->insertPressure( tx, rx, frequency, time_value, press );
378 return(
woss_db_manager->getPressure( tx, rx, frequency, time_value ) );
382#ifdef WOSS_MULTITHREAD
386 static constexpr inline int MAX_TOTAL_THREADS = 32;
417 virtual std::unique_ptr<Pressure>
getWossPressure(
const CoordZ& tx_coordz,
const CoordZ& rx_coordz,
double start_frequency,
double end_frequency,
const Time& time_value )
override;
428 virtual std::unique_ptr<Pressure>
getWossPressure(
const CoordZ& tx_coordz,
const CoordZ& rx_coordz,
double start_frequency,
double end_frequency,
double time_value )
override;
440 virtual std::unique_ptr<TimeArr>
getWossTimeArr(
const CoordZ& tx_coordz,
const CoordZ& rx_coordz,
double start_frequency,
double end_frequency,
const Time& time_value )
override;
451 virtual std::unique_ptr<TimeArr>
getWossTimeArr(
const CoordZ& tx_coordz,
const CoordZ& rx_coordz,
double start_frequency,
double end_frequency,
double time_value )
override;
532 using ActiveWoss = std::map< std::shared_ptr<Woss>, std::unique_ptr<ThreadCondSignal> >;
536 using AWCRIter = ActiveWoss::const_reverse_iterator;
3D-Coordinates (lat, long, depth) class definitions and functions library
Definition coordinates-definitions.h:384
Complex attenuated pressure class.
Definition pressure-definitions.h:52
static constexpr std::complex< double > createNotValid()
Definition pressure-definitions.h:126
static T & instance()
Definition singleton-definitions.h:90
Channel power delay profile class.
Definition time-arrival-definitions.h:70
static TimeArrMap & createNotValid()
Definition time-arrival-definitions.h:531
a class for time date manipulation
Definition time-definitions.h:83
Multi-threaded extension of WossManagerResDb.
Definition woss-manager.h:397
ActiveWoss active_woss
Definition woss-manager.h:556
void setConcurrentThreads(unsigned int number)
Definition woss-manager.h:499
ActiveWoss::const_iterator AWCIter
Definition woss-manager.h:535
unsigned int getConcurrentThreads() const
Definition woss-manager.h:505
ActiveWoss::reverse_iterator AWRIter
Definition woss-manager.h:534
void setUseThreadPoolFlag(bool flag)
Definition woss-manager.h:512
virtual std::unique_ptr< TimeArr > getWossTimeArr(const CoordZ &tx_coordz, const CoordZ &rx_coordz, double start_frequency, double end_frequency, const Time &time_value) override
Definition woss-manager.cpp:715
WossManagerResDbMT()
Definition woss-manager.cpp:388
bool getUseThreadPoolFlag()
Definition woss-manager.h:519
ActiveWoss::const_reverse_iterator AWCRIter
Definition woss-manager.h:536
std::mutex request_mutex
Definition woss-manager.h:551
std::map< std::shared_ptr< Woss >, std::unique_ptr< ThreadCondSignal > > ActiveWoss
Definition woss-manager.h:532
unsigned int concurrent_threads
Definition woss-manager.h:546
ActiveWoss::iterator AWIter
Definition woss-manager.h:533
virtual std::unique_ptr< Pressure > getWossPressure(const CoordZ &tx_coordz, const CoordZ &rx_coordz, double start_frequency, double end_frequency, const Time &time_value) override
Definition woss-manager.cpp:867
void checkConcurrentThreads()
Definition woss-manager.cpp:404
virtual ~WossManagerResDbMT() override=default
bool use_thread_pool
Definition woss-manager.h:561
unsigned int max_thread_number
Definition woss-manager.h:541
Abstract class that implements WossManager. It adds computed results dbs control.
Definition woss-manager.h:270
WossManagerResDb & setWossDbManager(const std::shared_ptr< WossDbManager > &ptr)
Definition woss-manager.h:305
void dbInsertTimeArr(const CoordZ &tx, const CoordZ &rx, double frequency, const Time &time_value, const TimeArr &channel) const
Definition woss-manager.h:360
std::shared_ptr< WossDbManager > woss_db_manager
Definition woss-manager.h:312
virtual std::unique_ptr< TimeArr > getWossTimeArr(const CoordZ &tx_coordz, const CoordZ &rx_coordz, double start_frequency, double end_frequency, const Time &time_value) override
Definition woss-manager.cpp:248
void dbInsertPressure(const CoordZ &tx, const CoordZ &rx, double frequency, const Time &time_value, const Pressure &press) const
Definition woss-manager.h:371
std::unique_ptr< Pressure > dbGetPressure(const CoordZ &tx, const CoordZ &rx, double frequency, const Time &time_value) const
Definition woss-manager.h:376
std::unique_ptr< TimeArr > dbGetTimeArr(const CoordZ &tx, const CoordZ &rx, double frequency, const Time &time_value) const
Definition woss-manager.h:365
virtual ~WossManagerResDb() override=default
WossManagerResDb()
Definition woss-manager.cpp:241
virtual std::unique_ptr< Pressure > getWossPressure(const CoordZ &tx_coordz, const CoordZ &rx_coordz, double start_frequency, double end_frequency, const Time &time_value) override
Definition woss-manager.cpp:325
Abstract class that interfaces Pressure or TimeArr requests from user layer.
Definition woss-manager.h:90
virtual ~WossManager()=default
virtual WossManager & eraseActiveWoss(const CoordZ &tx, const CoordZ &rx, double start_frequency, double end_frequency)=0
bool is_time_evolution_active
Definition woss-manager.h:249
void setDebugFlag(bool flag)
Definition woss-manager.h:227
WossManager()
Definition woss-manager.cpp:45
static const Time NO_EVOLUTION_TIME
Definition woss-manager.h:237
virtual bool timeEvolve(const Time &time_value)=0
bool getTimeEvolutionActiveFlag() const
Definition woss-manager.h:231
std::shared_ptr< WossCreator > getWossCreator() const
Definition woss-manager.h:229
virtual std::shared_ptr< Woss > getActiveWoss(const CoordZ &tx, const CoordZ &rx, double start_frequency, double end_frequency)
Definition woss-manager.cpp:235
virtual std::unique_ptr< Pressure > getWossPressure(const CoordZ &tx_coordz, const CoordZ &rx_coordz, double start_frequency, double end_frequency, const Time &time_value)=0
Definition woss-manager.cpp:108
bool getDebugFlag() const
Definition woss-manager.h:233
virtual std::shared_ptr< Woss > getWoss(const CoordZ &tx, const CoordZ &rx, double start_frequency, double end_frequency)=0
std::shared_ptr< WossCreator > woss_creator
Definition woss-manager.h:242
virtual std::unique_ptr< TimeArr > getWossTimeArr(const CoordZ &tx_coordz, const CoordZ &rx_coordz, double start_frequency, double end_frequency, const Time &time_value)=0
Definition woss-manager.cpp:53
bool debug
Definition woss-manager.h:247
void setTimeEvolutionActiveFlag(bool flag)
Definition woss-manager.h:225
WossManager & setWossCreator(const std::shared_ptr< WossCreator > &ptr)
Definition woss-manager.h:223
Provides the interface for woss::DefHandler class.
Definition ac-toolbox-arr-asc-reader.h:44
std::vector< SimFreq > SimFreqVector
Definition woss-manager.h:71
std::pair< CoordZ, CoordZ > CoordZPair
Definition woss-manager.h:56
std::vector< CoordZPair > CoordZPairVect
Definition woss-manager.h:61
std::pair< double, double > SimFreq
Definition woss-manager.h:66
std::vector< std::unique_ptr< Pressure > > PressureVector
Definition woss-manager.h:76
std::vector< std::unique_ptr< TimeArr > > TimeArrVector
Definition woss-manager.h:81
Definition woss-manager.h:527
std::condition_variable condition
Definition woss-manager.h:529
std::mutex mutex
Definition woss-manager.h:528
Provides the interface for woss::WossCreator class.
Provides the interface for woss::WossDbManager class.