xrootd
Loading...
Searching...
No Matches
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 <cstdint>
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 const URL &prefurl = URL() );
66
67 //------------------------------------------------------------------------
69 //------------------------------------------------------------------------
71
72 //------------------------------------------------------------------------
74 //------------------------------------------------------------------------
75 const URL &GetURL() const
76 {
77 return pUrl;
78 }
79
80 //------------------------------------------------------------------------
92 //------------------------------------------------------------------------
94 MsgHandler *handler,
95 bool stateful,
96 time_t expires );
97
98 //------------------------------------------------------------------------
105 //------------------------------------------------------------------------
106 Status QueryTransport( uint16_t query, AnyObject &result );
107
108 //------------------------------------------------------------------------
110 //------------------------------------------------------------------------
112
113 //------------------------------------------------------------------------
115 //------------------------------------------------------------------------
117
118 //------------------------------------------------------------------------
120 //------------------------------------------------------------------------
121 void Tick( time_t now );
122
123 //------------------------------------------------------------------------
125 //------------------------------------------------------------------------
127
128 //------------------------------------------------------------------------
130 //------------------------------------------------------------------------
132
133 //------------------------------------------------------------------------
135 //------------------------------------------------------------------------
136 uint16_t NbConnectedStrm();
137
138 //------------------------------------------------------------------------
140 //------------------------------------------------------------------------
141 void SetOnDataConnectHandler( std::shared_ptr<Job> &onConnJob );
142
143 //------------------------------------------------------------------------
146 //------------------------------------------------------------------------
147 bool CanCollapse( const URL &url );
148
149 //------------------------------------------------------------------------
151 //------------------------------------------------------------------------
153
154 private:
155
164 TickGeneratorTask *pTickGenerator;
166 };
167}
168
169#endif // __XRD_CL_POST_CHANNEL_HH__
Definition XrdClAnyObject.hh:33
Channel event handler.
Definition XrdClPostMasterInterfaces.hh:210
A communication channel between the client and the server.
Definition XrdClChannel.hh:49
Poller * pPoller
Definition XrdClChannel.hh:157
const URL & GetURL() const
Get the URL.
Definition XrdClChannel.hh:75
uint16_t NbConnectedStrm()
Get the number of connected data streams.
Status ForceReconnect()
Force reconnect.
void RemoveEventHandler(ChannelEventHandler *handler)
Remove a channel event handler.
void SetOnDataConnectHandler(std::shared_ptr< Job > &onConnJob)
Set the on-connect handler for data streams.
~Channel()
Destructor.
void RegisterEventHandler(ChannelEventHandler *handler)
Register channel event handler.
TickGeneratorTask * pTickGenerator
Definition XrdClChannel.hh:164
JobManager * pJobManager
Definition XrdClChannel.hh:165
AnyObject pChannelData
Definition XrdClChannel.hh:162
void DecFileInstCnt()
Decrement file object instance count bound to this channel.
XrdSysMutex pMutex
Definition XrdClChannel.hh:161
Status ForceDisconnect()
Force disconnect of all streams.
XRootDStatus Send(Message *msg, MsgHandler *handler, bool stateful, time_t expires)
TransportHandler * pTransport
Definition XrdClChannel.hh:158
void Tick(time_t now)
Handle a time event.
URL pUrl
Definition XrdClChannel.hh:156
InQueue pIncoming
Definition XrdClChannel.hh:163
bool CanCollapse(const URL &url)
Status QueryTransport(uint16_t query, AnyObject &result)
TaskManager * pTaskManager
Definition XrdClChannel.hh:159
Stream * pStream
Definition XrdClChannel.hh:160
Channel(const URL &url, Poller *poller, TransportHandler *transport, TaskManager *taskManager, JobManager *jobManager, const URL &prefurl=URL())
A synchronize queue for incoming data.
Definition XrdClInQueue.hh:37
A synchronized queue.
Definition XrdClJobManager.hh:51
The message representation used throughout the system.
Definition XrdClMessage.hh:30
Message handler.
Definition XrdClPostMasterInterfaces.hh:51
Interface for socket pollers.
Definition XrdClPoller.hh:87
Stream.
Definition XrdClStream.hh:52
Definition XrdClTaskManager.hh:76
Perform the handshake and the authentication for each physical stream.
Definition XrdClPostMasterInterfaces.hh:310
URL representation.
Definition XrdClURL.hh:31
Request status.
Definition XrdClXRootDResponses.hh:219
Definition XrdSysPthread.hh:165
Definition XrdClAction.hh:34
Procedure execution status.
Definition XrdClStatus.hh:115