xrootd
Loading...
Searching...
No Matches
XrdClTls.hh
Go to the documentation of this file.
1//------------------------------------------------------------------------------
2// Copyright (c) 2011-2012 by European Organization for Nuclear Research (CERN)
3// Author: Michal Simon <simonm@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_TLS_HH__
20#define __XRD_CL_TLS_HH__
21
22#include <memory>
23
25
28
29namespace XrdCl
30{
31 class Socket;
32
33 //----------------------------------------------------------------------------
35 //----------------------------------------------------------------------------
36 class Tls
37 {
38 public:
39
40 //------------------------------------------------------------------------
42 //------------------------------------------------------------------------
43 Tls( Socket *socket, AsyncSocketHandler *socketHandler );
44
45 //------------------------------------------------------------------------
47 //------------------------------------------------------------------------
49 {
50 }
51
52 //------------------------------------------------------------------------
54 //------------------------------------------------------------------------
55 XRootDStatus Connect( const std::string &thehost, XrdNetAddrInfo *netInfo );
56
57 //------------------------------------------------------------------------
60 //------------------------------------------------------------------------
61 XRootDStatus Read( char *buffer, size_t size, int &bytesRead );
62
63 //------------------------------------------------------------------------
66 //------------------------------------------------------------------------
67 XRootDStatus ReadV( iovec *iov, int iocnt, int &bytesRead );
68
69 //------------------------------------------------------------------------
72 //------------------------------------------------------------------------
73 XRootDStatus Send( const char *buffer, size_t size, int &bytesWritten );
74
75 //------------------------------------------------------------------------
77 //------------------------------------------------------------------------
78 void Shutdown();
79
80 //------------------------------------------------------------------------
86 //------------------------------------------------------------------------
87 uint8_t MapEvent( uint8_t event );
88
89 //------------------------------------------------------------------------
91 //------------------------------------------------------------------------
92 static void ClearErrorQueue();
93
94 private:
95
96 //------------------------------------------------------------------------
104 //------------------------------------------------------------------------
106
107 //------------------------------------------------------------------------
109 //------------------------------------------------------------------------
111
112 //------------------------------------------------------------------------
114 //------------------------------------------------------------------------
116
117 //------------------------------------------------------------------------
119 //------------------------------------------------------------------------
120 std::unique_ptr<XrdTlsSocket> pTls;
121
122 //------------------------------------------------------------------------
123 // In case during TLS hand-shake WantRead has been returned on write or
124 // WantWrite has been returned on read we need to flip the following events.
125 //
126 // None : all events should be processed normally
127 // ReadOnWrite : on write event the OnRead routines should be called
128 // WriteOnRead : on read event the OnWrite routines should be called
129 //------------------------------------------------------------------------
131
132 //------------------------------------------------------------------------
134 //------------------------------------------------------------------------
136 };
137}
138
139#endif // __XRD_CL_TLS_HH__
140
Definition XrdClAsyncSocketHandler.hh:44
A network socket.
Definition XrdClSocket.hh:43
TLS layer for socket connection.
Definition XrdClTls.hh:37
Socket * pSocket
The underlying vanilla socket.
Definition XrdClTls.hh:115
Tls(Socket *socket, AsyncSocketHandler *socketHandler)
Constructor - creates async TLS layer for given socker file descriptor.
TlsHSRevert pTlsHSRevert
Definition XrdClTls.hh:130
XRootDStatus ToStatus(XrdTls::RC rc)
Translate OPEN SSL error code into XRootD Status.
XRootDStatus ReadV(iovec *iov, int iocnt, int &bytesRead)
XRootDStatus Read(char *buffer, size_t size, int &bytesRead)
uint8_t MapEvent(uint8_t event)
std::unique_ptr< XrdTlsSocket > pTls
The TSL I/O wrapper over socket.
Definition XrdClTls.hh:120
TlsHSRevert
Definition XrdClTls.hh:105
@ ReadOnWrite
Definition XrdClTls.hh:105
@ None
Definition XrdClTls.hh:105
@ WriteOnRead
Definition XrdClTls.hh:105
XRootDStatus Send(const char *buffer, size_t size, int &bytesWritten)
~Tls()
Destructor.
Definition XrdClTls.hh:48
static void ClearErrorQueue()
Clear the error queue for the calling thread.
AsyncSocketHandler * pSocketHandler
Socket handler (for enabling/disabling write notification)
Definition XrdClTls.hh:135
void Shutdown()
Shutdown the TLS/SSL connection.
XRootDStatus Connect(const std::string &thehost, XrdNetAddrInfo *netInfo)
Establish a TLS/SSL session and perform host verification.
Request status.
Definition XrdClXRootDResponses.hh:219
Definition XrdNetAddrInfo.hh:54
RC
Definition XrdTls.hh:40
Definition XrdClAction.hh:34
Definition XrdOucIOVec.hh:65