XRootD
XrdCl::PollerFactory Class Reference

Helper for creating poller objects. More...

#include <XrdClPollerFactory.hh>

+ Collaboration diagram for XrdCl::PollerFactory:

Static Public Member Functions

static PollerCreatePoller (const std::string &preference)
 

Detailed Description

Helper for creating poller objects.

Definition at line 30 of file XrdClPollerFactory.hh.

Member Function Documentation

◆ CreatePoller()

Poller * XrdCl::PollerFactory::CreatePoller ( const std::string &  preference)
static

Create a poller object, try in order of preference, if none of the poller types is known then return 0

Parameters
preferencecomma separated list of poller types in order of preference
Returns
poller object or 0 if non of the poller types is known

Definition at line 44 of file XrdClPollerFactory.cc.

45  {
46  Log *log = DefaultEnv::GetLog();
47 
48  //--------------------------------------------------------------------------
49  // Create a list of known pollers
50  //--------------------------------------------------------------------------
51  typedef std::map<std::string, Poller *(*)()> PollerMap;
52  PollerMap pollerMap;
53  pollerMap["built-in"] = createBuiltIn;
54 
55  //--------------------------------------------------------------------------
56  // Print the list of available pollers
57  //--------------------------------------------------------------------------
58  PollerMap::iterator it;
59  std::string available;
60  for( it = pollerMap.begin(); it != pollerMap.end(); ++it )
61  {
62  available += it->first; available += ", ";
63  }
64  if( !available.empty() )
65  available.erase( available.length()-2, 2 );
66  log->Debug( PollerMsg, "Available pollers: %s", available.c_str() );
67 
68  //--------------------------------------------------------------------------
69  // Try to create a poller
70  //--------------------------------------------------------------------------
71  if( preference.empty() )
72  {
73  log->Error( PollerMsg, "Poller preference list is empty" );
74  return 0;
75  }
76  log->Debug( PollerMsg, "Attempting to create a poller according to "
77  "preference: %s", preference.c_str() );
78 
79  std::vector<std::string> prefs;
80  std::vector<std::string>::iterator itP;
81  Utils::splitString( prefs, preference, "," );
82  for( itP = prefs.begin(); itP != prefs.end(); ++itP )
83  {
84  it = pollerMap.find( *itP );
85  if( it == pollerMap.end() )
86  {
87  log->Debug( PollerMsg, "Unable to create poller: %s",
88  itP->c_str() );
89  continue;
90  }
91  log->Debug( PollerMsg, "Creating poller: %s", itP->c_str() );
92  return (*it->second)();
93  }
94 
95  return 0;
96  }
static Log * GetLog()
Get default log.
static void splitString(Container &result, const std::string &input, const std::string &delimiter)
Split a string.
Definition: XrdClUtils.hh:56
const uint64_t PollerMsg
XrdSysError Log
Definition: XrdConfig.cc:112

References XrdCl::Log::Debug(), XrdCl::Log::Error(), XrdCl::DefaultEnv::GetLog(), XrdCl::PollerMsg, and XrdCl::Utils::splitString().

Referenced by XrdCl::PostMaster::Initialize().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

The documentation for this class was generated from the following files: