xrootd
XrdClPostMaster.hh
Go to the documentation of this file.
1 //------------------------------------------------------------------------------
2 // Copyright (c) 2011-2012 by European Organization for Nuclear Research (CERN)
3 // Author: Lukasz Janyst <ljanyst@cern.ch>
4 //------------------------------------------------------------------------------
5 // XRootD is free software: you can redistribute it and/or modify
6 // it under the terms of the GNU Lesser General Public License as published by
7 // the Free Software Foundation, either version 3 of the License, or
8 // (at your option) any later version.
9 //
10 // XRootD is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU General Public License for more details.
14 //
15 // You should have received a copy of the GNU Lesser General Public License
16 // along with XRootD. If not, see <http://www.gnu.org/licenses/>.
17 //------------------------------------------------------------------------------
18 
19 #ifndef __XRD_CL_POST_MASTER_HH__
20 #define __XRD_CL_POST_MASTER_HH__
21 
22 #include <stdint.h>
23 #include <map>
24 #include <vector>
25 #include <functional>
26 
27 #include "XrdCl/XrdClStatus.hh"
28 #include "XrdCl/XrdClURL.hh"
30 
31 #include "XrdSys/XrdSysPthread.hh"
32 
33 namespace XrdCl
34 {
35  class Poller;
36  class TaskManager;
37  class Channel;
38  class JobManager;
39  class Job;
40 
41  //----------------------------------------------------------------------------
43  //----------------------------------------------------------------------------
44  class PostMaster
45  {
46  public:
47  //------------------------------------------------------------------------
49  //------------------------------------------------------------------------
50  PostMaster();
51 
52  //------------------------------------------------------------------------
54  //------------------------------------------------------------------------
55  virtual ~PostMaster();
56 
57  //------------------------------------------------------------------------
59  //------------------------------------------------------------------------
60  bool Initialize();
61 
62  //------------------------------------------------------------------------
64  //------------------------------------------------------------------------
65  bool Finalize();
66 
67  //------------------------------------------------------------------------
69  //------------------------------------------------------------------------
70  bool Start();
71 
72  //------------------------------------------------------------------------
74  //------------------------------------------------------------------------
75  bool Stop();
76 
77  //------------------------------------------------------------------------
79  //------------------------------------------------------------------------
80  bool Reinitialize();
81 
82  //------------------------------------------------------------------------
96  //------------------------------------------------------------------------
97  Status Send( const URL &url,
98  Message *msg,
99  bool stateful,
100  time_t expires );
101 
102  //------------------------------------------------------------------------
118  //------------------------------------------------------------------------
119  Status Send( const URL &url,
120  Message *msg,
121  OutgoingMsgHandler *handler,
122  bool stateful,
123  time_t expires );
124 
125  //------------------------------------------------------------------------
127  //------------------------------------------------------------------------
128  Status Redirect( const URL &url,
129  Message *msg,
130  IncomingMsgHandler *handler);
131 
132  //------------------------------------------------------------------------
143  //------------------------------------------------------------------------
144  Status Receive( const URL &url,
145  Message *&msg,
146  MessageFilter *filter,
147  time_t expires );
148 
149  //------------------------------------------------------------------------
157  //------------------------------------------------------------------------
158  Status Receive( const URL &url,
159  IncomingMsgHandler *handler,
160  time_t expires );
161 
162  //------------------------------------------------------------------------
170  //------------------------------------------------------------------------
171  Status QueryTransport( const URL &url,
172  uint16_t query,
173  AnyObject &result );
174 
175  //------------------------------------------------------------------------
177  //------------------------------------------------------------------------
178  Status RegisterEventHandler( const URL &url,
179  ChannelEventHandler *handler );
180 
181  //------------------------------------------------------------------------
183  //------------------------------------------------------------------------
184  Status RemoveEventHandler( const URL &url,
185  ChannelEventHandler *handler );
186 
187  //------------------------------------------------------------------------
189  //------------------------------------------------------------------------
191  {
192  return pTaskManager;
193  }
194 
195  //------------------------------------------------------------------------
197  //------------------------------------------------------------------------
199  {
200  return pJobManager;
201  }
202 
203  //------------------------------------------------------------------------
205  //------------------------------------------------------------------------
206  Status ForceDisconnect( const URL &url );
207 
208  //------------------------------------------------------------------------
210  //------------------------------------------------------------------------
211  uint16_t NbConnectedStrm( const URL &url );
212 
213  //------------------------------------------------------------------------
215  //------------------------------------------------------------------------
216  void SetOnConnectHandler( const URL &url,
217  Job *onConnJob );
218 
219  private:
220  Channel *GetChannel( const URL &url );
221 
222  typedef std::map<std::string, Channel*> ChannelMap;
229  };
230 }
231 
232 #endif // __XRD_CL_POST_MASTER_HH__
XrdCl::PostMaster::pTaskManager
TaskManager * pTaskManager
Definition: XrdClPostMaster.hh:224
XrdCl::PostMaster::SetOnConnectHandler
void SetOnConnectHandler(const URL &url, Job *onConnJob)
Set the on-connect handler for data streams.
XrdCl::OutgoingMsgHandler
Message status handler.
Definition: XrdClPostMasterInterfaces.hh:167
XrdClPostMasterInterfaces.hh
XrdSysMutex
Definition: XrdSysPthread.hh:165
XrdCl::PostMaster::ForceDisconnect
Status ForceDisconnect(const URL &url)
Shut down a channel.
XrdSysPthread.hh
XrdCl::PostMaster::Initialize
bool Initialize()
Initializer.
XrdCl::PostMaster::GetChannel
Channel * GetChannel(const URL &url)
XrdCl::PostMaster::pJobManager
JobManager * pJobManager
Definition: XrdClPostMaster.hh:228
XrdCl::PostMaster::~PostMaster
virtual ~PostMaster()
Destructor.
XrdCl::Poller
Interface for socket pollers.
Definition: XrdClPoller.hh:86
XrdCl::PostMaster::ChannelMap
std::map< std::string, Channel * > ChannelMap
Definition: XrdClPostMaster.hh:222
XrdCl::PostMaster::pPoller
Poller * pPoller
Definition: XrdClPostMaster.hh:223
XrdCl::PostMaster::pInitialized
bool pInitialized
Definition: XrdClPostMaster.hh:227
XrdCl::JobManager
A synchronized queue.
Definition: XrdClJobManager.hh:50
XrdCl::PostMaster::NbConnectedStrm
uint16_t NbConnectedStrm(const URL &url)
Get the number of connected data streams.
XrdCl::PostMaster::RemoveEventHandler
Status RemoveEventHandler(const URL &url, ChannelEventHandler *handler)
Remove a channel event handler.
XrdCl::Message
The message representation used throughout the system.
Definition: XrdClMessage.hh:29
XrdCl::PostMaster::Redirect
Status Redirect(const URL &url, Message *msg, IncomingMsgHandler *handler)
XrdCl::PostMaster::Receive
Status Receive(const URL &url, Message *&msg, MessageFilter *filter, time_t expires)
XrdCl::PostMaster::Finalize
bool Finalize()
Finalizer.
XrdCl::PostMaster::QueryTransport
Status QueryTransport(const URL &url, uint16_t query, AnyObject &result)
XrdCl::PostMaster::pChannelMapMutex
XrdSysMutex pChannelMapMutex
Definition: XrdClPostMaster.hh:226
XrdCl::PostMaster::Reinitialize
bool Reinitialize()
Reinitialize after fork.
XrdCl::TaskManager
Definition: XrdClTaskManager.hh:75
XrdCl::MessageFilter
Message filter.
Definition: XrdClPostMasterInterfaces.hh:46
XrdCl::PostMaster::Stop
bool Stop()
Stop the postmaster.
XrdCl::IncomingMsgHandler
Message handler.
Definition: XrdClPostMasterInterfaces.hh:68
XrdCl::Channel
A communication channel between the client and the server.
Definition: XrdClChannel.hh:48
XrdCl::PostMaster::Send
Status Send(const URL &url, Message *msg, bool stateful, time_t expires)
XrdCl
Definition: XrdClAnyObject.hh:25
XrdCl::PostMaster::RegisterEventHandler
Status RegisterEventHandler(const URL &url, ChannelEventHandler *handler)
Register channel event handler.
XrdCl::PostMaster::PostMaster
PostMaster()
Constructor.
XrdClStatus.hh
XrdClURL.hh
XrdCl::PostMaster::GetTaskManager
TaskManager * GetTaskManager()
Get the task manager object user by the post master.
Definition: XrdClPostMaster.hh:190
XrdCl::Status
Procedure execution status.
Definition: XrdClStatus.hh:109
XrdCl::URL
URL representation.
Definition: XrdClURL.hh:30
XrdCl::Job
Interface for a job to be run by the job manager.
Definition: XrdClJobManager.hh:33
XrdCl::PostMaster::pChannelMap
ChannelMap pChannelMap
Definition: XrdClPostMaster.hh:225
XrdCl::PostMaster::Start
bool Start()
Start the post master.
XrdCl::ChannelEventHandler
Channel event handler.
Definition: XrdClPostMasterInterfaces.hh:220
XrdCl::PostMaster::GetJobManager
JobManager * GetJobManager()
Get the job manager object user by the post master.
Definition: XrdClPostMaster.hh:198
XrdCl::AnyObject
Definition: XrdClAnyObject.hh:32
XrdCl::PostMaster
A hub for dispatching and receiving messages.
Definition: XrdClPostMaster.hh:44