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 //------------------------------------------------------------------------
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 //------------------------------------------------------------------------
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 //------------------------------------------------------------------------
152 void DecFileInstCnt();
153
154 private:
155
156 URL pUrl;
157 Poller *pPoller;
158 TransportHandler *pTransport;
159 TaskManager *pTaskManager;
160 Stream *pStream;
161 XrdSysMutex pMutex;
162 AnyObject pChannelData;
163 InQueue pIncoming;
164 TickGeneratorTask *pTickGenerator;
165 JobManager *pJobManager;
166 };
167}
168
169#endif // __XRD_CL_POST_CHANNEL_HH__
A communication channel between the client and the server.
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.
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
Procedure execution status.