xrootd
XrdClChannel.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_CHANNEL_HH__
20#define __XRD_CL_POST_CHANNEL_HH__
21
22#include <stdint.h>
23#include <vector>
24#include <ctime>
25#include <functional>
26
27#include "XrdCl/XrdClStatus.hh"
28#include "XrdCl/XrdClURL.hh"
29#include "XrdCl/XrdClPoller.hh"
30#include "XrdCl/XrdClInQueue.hh"
34
36
37namespace XrdCl
38{
39 class Stream;
40 class JobManager;
41 class VirtualRedirector;
42 class TickGeneratorTask;
43 class Job;
44
45 //----------------------------------------------------------------------------
47 //----------------------------------------------------------------------------
48 class Channel
49 {
50 public:
51 //------------------------------------------------------------------------
59 //------------------------------------------------------------------------
60 Channel( const URL &url,
61 Poller *poller,
62 TransportHandler *transport,
63 TaskManager *taskManager,
64 JobManager *jobManager );
65
66 //------------------------------------------------------------------------
68 //------------------------------------------------------------------------
70
71 //------------------------------------------------------------------------
73 //------------------------------------------------------------------------
74 const URL &GetURL() const
75 {
76 return pUrl;
77 }
78
79 //------------------------------------------------------------------------
89 //------------------------------------------------------------------------
90 Status Send( Message *msg, bool stateful, time_t expires );
91
92 //------------------------------------------------------------------------
105 //------------------------------------------------------------------------
107 OutgoingMsgHandler *handler,
108 bool stateful,
109 time_t expires );
110
111 //------------------------------------------------------------------------
121 //------------------------------------------------------------------------
122 Status Receive( Message *&msg, MessageFilter *filter, time_t expires );
123
124 //------------------------------------------------------------------------
131 //------------------------------------------------------------------------
132 Status Receive( IncomingMsgHandler *handler, time_t expires );
133
134 //------------------------------------------------------------------------
141 //------------------------------------------------------------------------
142 Status QueryTransport( uint16_t query, AnyObject &result );
143
144 //------------------------------------------------------------------------
146 //------------------------------------------------------------------------
148
149 //------------------------------------------------------------------------
151 //------------------------------------------------------------------------
153
154 //------------------------------------------------------------------------
156 //------------------------------------------------------------------------
157 void Tick( time_t now );
158
159 //------------------------------------------------------------------------
161 //------------------------------------------------------------------------
163
164 //------------------------------------------------------------------------
166 //------------------------------------------------------------------------
167 uint16_t NbConnectedStrm();
168
169 //------------------------------------------------------------------------
171 //------------------------------------------------------------------------
172 void SetOnConnectHandler( Job *onConnJob );
173
174 private:
175
180 std::vector<Stream *> pStreams;
184 TickGeneratorTask *pTickGenerator;
186 };
187}
188
189#endif // __XRD_CL_POST_CHANNEL_HH__
Definition: XrdClAnyObject.hh:33
Channel event handler.
Definition: XrdClPostMasterInterfaces.hh:221
A communication channel between the client and the server.
Definition: XrdClChannel.hh:49
Poller * pPoller
Definition: XrdClChannel.hh:177
const URL & GetURL() const
Get the URL.
Definition: XrdClChannel.hh:74
Channel(const URL &url, Poller *poller, TransportHandler *transport, TaskManager *taskManager, JobManager *jobManager)
uint16_t NbConnectedStrm()
Get the number of connected data streams.
void RemoveEventHandler(ChannelEventHandler *handler)
Remove a channel event handler.
Status Send(Message *msg, bool stateful, time_t expires)
~Channel()
Destructor.
void RegisterEventHandler(ChannelEventHandler *handler)
Register channel event handler.
TickGeneratorTask * pTickGenerator
Definition: XrdClChannel.hh:184
JobManager * pJobManager
Definition: XrdClChannel.hh:185
AnyObject pChannelData
Definition: XrdClChannel.hh:182
Status Receive(Message *&msg, MessageFilter *filter, time_t expires)
XrdSysMutex pMutex
Definition: XrdClChannel.hh:181
Status ForceDisconnect()
Force disconnect of all streams.
std::vector< Stream * > pStreams
Definition: XrdClChannel.hh:180
TransportHandler * pTransport
Definition: XrdClChannel.hh:178
void Tick(time_t now)
Handle a time event.
URL pUrl
Definition: XrdClChannel.hh:176
InQueue pIncoming
Definition: XrdClChannel.hh:183
Status Receive(IncomingMsgHandler *handler, time_t expires)
Status Send(Message *msg, OutgoingMsgHandler *handler, bool stateful, time_t expires)
void SetOnConnectHandler(Job *onConnJob)
Set the on-connect handler for data streams.
Status QueryTransport(uint16_t query, AnyObject &result)
TaskManager * pTaskManager
Definition: XrdClChannel.hh:179
A synchronize queue for incoming data.
Definition: XrdClInQueue.hh:36
Message handler.
Definition: XrdClPostMasterInterfaces.hh:69
A synchronized queue.
Definition: XrdClJobManager.hh:51
Interface for a job to be run by the job manager.
Definition: XrdClJobManager.hh:34
Message filter.
Definition: XrdClPostMasterInterfaces.hh:47
The message representation used throughout the system.
Definition: XrdClMessage.hh:30
Message status handler.
Definition: XrdClPostMasterInterfaces.hh:168
Interface for socket pollers.
Definition: XrdClPoller.hh:87
Definition: XrdClTaskManager.hh:76
Perform the handshake and the authentication for each physical stream.
Definition: XrdClPostMasterInterfaces.hh:303
URL representation.
Definition: XrdClURL.hh:31
Definition: XrdSysPthread.hh:166
Definition: XrdClAnyObject.hh:26
Procedure execution status.
Definition: XrdClStatus.hh:110