xrootd
XrdClRecorderPlugin.hh
Go to the documentation of this file.
1 //------------------------------------------------------------------------------
2 // Copyright (c) 2011-2017 by European Organization for Nuclear Research (CERN)
3 // Author: Michal Simon <michal.simon@cern.ch>
4 //------------------------------------------------------------------------------
5 // This file is part of the XRootD software suite.
6 //
7 // XRootD is free software: you can redistribute it and/or modify
8 // it under the terms of the GNU Lesser General Public License as published by
9 // the Free Software Foundation, either version 3 of the License, or
10 // (at your option) any later version.
11 //
12 // XRootD is distributed in the hope that it will be useful,
13 // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 // GNU General Public License for more details.
16 //
17 // You should have received a copy of the GNU Lesser General Public License
18 // along with XRootD. If not, see <http://www.gnu.org/licenses/>.
19 //
20 // In applying this licence, CERN does not waive the privileges and immunities
21 // granted to it by virtue of its status as an Intergovernmental Organization
22 // or submit itself to any jurisdiction.
23 
24 #pragma once
26 
27 namespace XrdCl
28 {
29 //------------------------------------------------------------------------------
31 //------------------------------------------------------------------------------
33 {
34  public:
35  //----------------------------------------------------------------------------
39  //----------------------------------------------------------------------------
40  RecorderFactory( const std::map<std::string, std::string>* config )
41  {
42  if( config )
43  {
44  auto itr = config->find( "output" );
45  Recorder::SetOutput( itr != config->end() ? itr->second : "" );
46  }
47  }
48 
49  //----------------------------------------------------------------------------
51  //----------------------------------------------------------------------------
52  virtual ~RecorderFactory()
53  {
54  }
55 
56  //----------------------------------------------------------------------------
58  //----------------------------------------------------------------------------
59  virtual FilePlugIn* CreateFile(const std::string& url)
60  {
61  std::unique_ptr<Recorder> ptr( new Recorder() );
62  if( !ptr->IsValid() )
63  return nullptr;
64  return static_cast<FilePlugIn*>( ptr.release() );
65  }
66 
67  //----------------------------------------------------------------------------
69  //----------------------------------------------------------------------------
70  virtual FileSystemPlugIn* CreateFileSystem(const std::string& url)
71  {
72  Log* log = DefaultEnv::GetLog();
73  log->Error(1, "FileSystem plugin implementation not supported");
74  return static_cast<FileSystemPlugIn*>(0);
75  }
76 };
77 
78 } // namespace xrdcl_proxy
static Log * GetLog()
Get default log.
An interface for file plug-ins.
Definition: XrdClPlugInInterface.hh:39
An interface for file plug-ins.
Definition: XrdClPlugInInterface.hh:284
Handle diagnostics.
Definition: XrdClLog.hh:101
void Error(uint64_t topic, const char *format,...)
Report an error.
Plugin factory.
Definition: XrdClPlugInInterface.hh:549
XrdCl recorder plug-in factory.
Definition: XrdClRecorderPlugin.hh:33
RecorderFactory(const std::map< std::string, std::string > *config)
Definition: XrdClRecorderPlugin.hh:40
virtual FilePlugIn * CreateFile(const std::string &url)
Create a file plug-in for the given URL.
Definition: XrdClRecorderPlugin.hh:59
virtual FileSystemPlugIn * CreateFileSystem(const std::string &url)
Create a file system plug-in for the given URL.
Definition: XrdClRecorderPlugin.hh:70
virtual ~RecorderFactory()
Destructor.
Definition: XrdClRecorderPlugin.hh:52
Definition: XrdClRecorder.hh:43
static void SetOutput(const std::string &cfgpath)
Definition: XrdClRecorder.hh:226
Definition: XrdClAction.hh:34