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;
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 //------------------------------------------------------------------------
70 ~Channel();
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 //------------------------------------------------------------------------
131 Status ForceDisconnect( bool hush );
132
133 //------------------------------------------------------------------------
135 //------------------------------------------------------------------------
137
138 //------------------------------------------------------------------------
140 //------------------------------------------------------------------------
141 uint16_t NbConnectedStrm();
142
143 //------------------------------------------------------------------------
145 //------------------------------------------------------------------------
146 void SetOnDataConnectHandler( std::shared_ptr<Job> &onConnJob );
147
148 //------------------------------------------------------------------------
151 //------------------------------------------------------------------------
152 bool CanCollapse( const URL &url );
153
154 //------------------------------------------------------------------------
156 //------------------------------------------------------------------------
157 void DecFileInstCnt();
158
159 private:
160
161 URL pUrl;
162 Poller *pPoller;
163 TransportHandler *pTransport;
164 TaskManager *pTaskManager;
165 Stream *pStream;
166 XrdSysMutex pMutex;
167 AnyObject pChannelData;
168 InQueue pIncoming;
169 TickGeneratorTask *pTickGenerator;
170 JobManager *pJobManager;
171 };
172}
173
174#endif // __XRD_CL_POST_CHANNEL_HH__
const URL & GetURL() const
Get the URL.
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.
void DecFileInstCnt()
Decrement file object instance count bound to this channel.
Status ForceDisconnect()
Force disconnect of all streams.
XRootDStatus Send(Message *msg, MsgHandler *handler, bool stateful, time_t expires)
void Tick(time_t now)
Handle a time event.
bool CanCollapse(const URL &url)
Status QueryTransport(uint16_t query, AnyObject &result)
Channel(const URL &url, Poller *poller, TransportHandler *transport, TaskManager *taskManager, JobManager *jobManager, const URL &prefurl=URL())
A synchronize queue for incoming data.
A synchronized queue.
Interface for a job to be run by the job manager.
The message representation used throughout the system.
Interface for socket pollers.
Perform the handshake and the authentication for each physical stream.
URL representation.
Definition XrdClURL.hh:31
An interface for metadata redirectors.
Procedure execution status.