xref: /aoo42x/main/sal/inc/osl/pipe.hxx (revision cdf0e10c)
1*cdf0e10cSrcweir /*************************************************************************
2*cdf0e10cSrcweir  *
3*cdf0e10cSrcweir  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4*cdf0e10cSrcweir  *
5*cdf0e10cSrcweir  * Copyright 2000, 2010 Oracle and/or its affiliates.
6*cdf0e10cSrcweir  *
7*cdf0e10cSrcweir  * OpenOffice.org - a multi-platform office productivity suite
8*cdf0e10cSrcweir  *
9*cdf0e10cSrcweir  * This file is part of OpenOffice.org.
10*cdf0e10cSrcweir  *
11*cdf0e10cSrcweir  * OpenOffice.org is free software: you can redistribute it and/or modify
12*cdf0e10cSrcweir  * it under the terms of the GNU Lesser General Public License version 3
13*cdf0e10cSrcweir  * only, as published by the Free Software Foundation.
14*cdf0e10cSrcweir  *
15*cdf0e10cSrcweir  * OpenOffice.org is distributed in the hope that it will be useful,
16*cdf0e10cSrcweir  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17*cdf0e10cSrcweir  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18*cdf0e10cSrcweir  * GNU Lesser General Public License version 3 for more details
19*cdf0e10cSrcweir  * (a copy is included in the LICENSE file that accompanied this code).
20*cdf0e10cSrcweir  *
21*cdf0e10cSrcweir  * You should have received a copy of the GNU Lesser General Public License
22*cdf0e10cSrcweir  * version 3 along with OpenOffice.org.  If not, see
23*cdf0e10cSrcweir  * <http://www.openoffice.org/license.html>
24*cdf0e10cSrcweir  * for a copy of the LGPLv3 License.
25*cdf0e10cSrcweir  *
26*cdf0e10cSrcweir  ************************************************************************/
27*cdf0e10cSrcweir #ifndef _OSL_PIPE_HXX_
28*cdf0e10cSrcweir #define _OSL_PIPE_HXX_
29*cdf0e10cSrcweir 
30*cdf0e10cSrcweir #include <osl/pipe_decl.hxx>
31*cdf0e10cSrcweir 
32*cdf0e10cSrcweir namespace osl
33*cdf0e10cSrcweir {
34*cdf0e10cSrcweir 	//______________________________________________________________________________
35*cdf0e10cSrcweir 	inline Pipe::Pipe()
36*cdf0e10cSrcweir 		: m_handle( 0 )
37*cdf0e10cSrcweir 	{}
38*cdf0e10cSrcweir 
39*cdf0e10cSrcweir 	//______________________________________________________________________________
40*cdf0e10cSrcweir     inline Pipe::Pipe(const ::rtl::OUString& strName, oslPipeOptions Options )
41*cdf0e10cSrcweir 		: m_handle( osl_createPipe( strName.pData, Options , 0 ) )
42*cdf0e10cSrcweir 	{}
43*cdf0e10cSrcweir 
44*cdf0e10cSrcweir 	//______________________________________________________________________________
45*cdf0e10cSrcweir     inline Pipe::Pipe(const ::rtl::OUString& strName, oslPipeOptions Options,const Security & rSecurity)
46*cdf0e10cSrcweir 		: m_handle( osl_createPipe( strName.pData, Options , rSecurity.getHandle() ) )
47*cdf0e10cSrcweir 	{}
48*cdf0e10cSrcweir 
49*cdf0e10cSrcweir 	//______________________________________________________________________________
50*cdf0e10cSrcweir 	inline Pipe::Pipe(const Pipe& pipe )
51*cdf0e10cSrcweir 		: m_handle( pipe.m_handle )
52*cdf0e10cSrcweir 	{
53*cdf0e10cSrcweir 		if( m_handle )
54*cdf0e10cSrcweir 			osl_acquirePipe( m_handle );
55*cdf0e10cSrcweir 	}
56*cdf0e10cSrcweir 
57*cdf0e10cSrcweir 	//______________________________________________________________________________
58*cdf0e10cSrcweir 	inline Pipe::Pipe( oslPipe pipe, __sal_NoAcquire )
59*cdf0e10cSrcweir 		: m_handle ( pipe )
60*cdf0e10cSrcweir 	{}
61*cdf0e10cSrcweir 
62*cdf0e10cSrcweir 	//______________________________________________________________________________
63*cdf0e10cSrcweir     inline Pipe::Pipe(oslPipe pipe)
64*cdf0e10cSrcweir 		: m_handle( pipe )
65*cdf0e10cSrcweir 	{
66*cdf0e10cSrcweir 		if( m_handle )
67*cdf0e10cSrcweir 			osl_acquirePipe( m_handle );
68*cdf0e10cSrcweir 	}
69*cdf0e10cSrcweir 
70*cdf0e10cSrcweir 	//______________________________________________________________________________
71*cdf0e10cSrcweir     inline Pipe::~Pipe()
72*cdf0e10cSrcweir 	{
73*cdf0e10cSrcweir 		if( m_handle )
74*cdf0e10cSrcweir 			osl_releasePipe( m_handle );
75*cdf0e10cSrcweir 	}
76*cdf0e10cSrcweir 
77*cdf0e10cSrcweir 	//______________________________________________________________________________
78*cdf0e10cSrcweir 	inline sal_Bool Pipe::create( const ::rtl::OUString & strName,
79*cdf0e10cSrcweir 								  oslPipeOptions Options, const Security &rSec )
80*cdf0e10cSrcweir 	{
81*cdf0e10cSrcweir 		*this = Pipe( strName, Options, rSec );
82*cdf0e10cSrcweir 		return is();
83*cdf0e10cSrcweir 	}
84*cdf0e10cSrcweir 
85*cdf0e10cSrcweir 	//______________________________________________________________________________
86*cdf0e10cSrcweir 	inline sal_Bool Pipe::create( const ::rtl::OUString & strName, oslPipeOptions Options  )
87*cdf0e10cSrcweir 	{
88*cdf0e10cSrcweir 		*this = Pipe( strName, Options );
89*cdf0e10cSrcweir 		return is();
90*cdf0e10cSrcweir 	}
91*cdf0e10cSrcweir 	//______________________________________________________________________________
92*cdf0e10cSrcweir 	inline Pipe& SAL_CALL Pipe::operator= (const Pipe& pipe)
93*cdf0e10cSrcweir 	{
94*cdf0e10cSrcweir 		*this = pipe.getHandle();
95*cdf0e10cSrcweir 		return *this;
96*cdf0e10cSrcweir 	}
97*cdf0e10cSrcweir 
98*cdf0e10cSrcweir 	//______________________________________________________________________________
99*cdf0e10cSrcweir 	inline Pipe & SAL_CALL Pipe::operator=( oslPipe pipe)
100*cdf0e10cSrcweir 	{
101*cdf0e10cSrcweir 		if( pipe )
102*cdf0e10cSrcweir 			osl_acquirePipe( pipe );
103*cdf0e10cSrcweir 		if( m_handle )
104*cdf0e10cSrcweir 			osl_releasePipe( m_handle );
105*cdf0e10cSrcweir 		m_handle = pipe;
106*cdf0e10cSrcweir 		return *this;
107*cdf0e10cSrcweir 	}
108*cdf0e10cSrcweir 
109*cdf0e10cSrcweir 	//______________________________________________________________________________
110*cdf0e10cSrcweir 	inline sal_Bool SAL_CALL Pipe::is() const
111*cdf0e10cSrcweir 	{
112*cdf0e10cSrcweir 		return m_handle != 0;
113*cdf0e10cSrcweir 	}
114*cdf0e10cSrcweir 
115*cdf0e10cSrcweir 	//______________________________________________________________________________
116*cdf0e10cSrcweir 	inline sal_Bool SAL_CALL Pipe::operator==( const Pipe& rPipe ) const
117*cdf0e10cSrcweir 	{
118*cdf0e10cSrcweir 		return m_handle == rPipe.m_handle;
119*cdf0e10cSrcweir 	}
120*cdf0e10cSrcweir 
121*cdf0e10cSrcweir 	//______________________________________________________________________________
122*cdf0e10cSrcweir     inline void SAL_CALL Pipe::close()
123*cdf0e10cSrcweir 	{
124*cdf0e10cSrcweir 		osl_closePipe( m_handle );
125*cdf0e10cSrcweir 	}
126*cdf0e10cSrcweir 
127*cdf0e10cSrcweir 	//______________________________________________________________________________
128*cdf0e10cSrcweir 	inline void SAL_CALL Pipe::clear()
129*cdf0e10cSrcweir 	{
130*cdf0e10cSrcweir 		if( m_handle )
131*cdf0e10cSrcweir         {
132*cdf0e10cSrcweir 			osl_releasePipe( m_handle );
133*cdf0e10cSrcweir             m_handle = 0;
134*cdf0e10cSrcweir         }
135*cdf0e10cSrcweir 	}
136*cdf0e10cSrcweir 
137*cdf0e10cSrcweir 	//______________________________________________________________________________
138*cdf0e10cSrcweir 	inline oslPipeError SAL_CALL Pipe::accept(StreamPipe& Connection)
139*cdf0e10cSrcweir 	{
140*cdf0e10cSrcweir 		Connection = StreamPipe( osl_acceptPipe( m_handle ), SAL_NO_ACQUIRE);
141*cdf0e10cSrcweir 		if( Connection.is() )
142*cdf0e10cSrcweir 			return osl_Pipe_E_None;
143*cdf0e10cSrcweir 		else
144*cdf0e10cSrcweir 			return getError();
145*cdf0e10cSrcweir 	}
146*cdf0e10cSrcweir 
147*cdf0e10cSrcweir 	//______________________________________________________________________________
148*cdf0e10cSrcweir 	inline oslPipeError SAL_CALL Pipe::getError() const
149*cdf0e10cSrcweir 	{
150*cdf0e10cSrcweir 		return osl_getLastPipeError( 0 );
151*cdf0e10cSrcweir 	}
152*cdf0e10cSrcweir 
153*cdf0e10cSrcweir 	//______________________________________________________________________________
154*cdf0e10cSrcweir 	inline oslPipe SAL_CALL Pipe::getHandle() const
155*cdf0e10cSrcweir 	{
156*cdf0e10cSrcweir 		return m_handle;
157*cdf0e10cSrcweir 	}
158*cdf0e10cSrcweir 
159*cdf0e10cSrcweir 	//______________________________________________________________________________
160*cdf0e10cSrcweir 	inline StreamPipe::StreamPipe(){}
161*cdf0e10cSrcweir 
162*cdf0e10cSrcweir 	//______________________________________________________________________________
163*cdf0e10cSrcweir     inline StreamPipe::StreamPipe(oslPipe hPipe)
164*cdf0e10cSrcweir 		: Pipe( hPipe )
165*cdf0e10cSrcweir 	{
166*cdf0e10cSrcweir 	}
167*cdf0e10cSrcweir 
168*cdf0e10cSrcweir 	//______________________________________________________________________________
169*cdf0e10cSrcweir     inline StreamPipe::StreamPipe(const ::rtl::OUString& strName, oslPipeOptions Options, const Security &rSec )
170*cdf0e10cSrcweir 		: Pipe( strName, Options , rSec )
171*cdf0e10cSrcweir 	{}
172*cdf0e10cSrcweir 
173*cdf0e10cSrcweir 	//______________________________________________________________________________
174*cdf0e10cSrcweir     inline StreamPipe::StreamPipe(const ::rtl::OUString& strName, oslPipeOptions Options  )
175*cdf0e10cSrcweir 		: Pipe( strName, Options )
176*cdf0e10cSrcweir 	{}
177*cdf0e10cSrcweir 
178*cdf0e10cSrcweir 	//______________________________________________________________________________
179*cdf0e10cSrcweir     inline StreamPipe::StreamPipe(const StreamPipe& aPipe)
180*cdf0e10cSrcweir 		: Pipe( aPipe )
181*cdf0e10cSrcweir 	{}
182*cdf0e10cSrcweir 	//______________________________________________________________________________
183*cdf0e10cSrcweir 	inline StreamPipe::StreamPipe( oslPipe pipe, __sal_NoAcquire noacquire )
184*cdf0e10cSrcweir 		: Pipe( pipe , noacquire )
185*cdf0e10cSrcweir 	{}
186*cdf0e10cSrcweir 
187*cdf0e10cSrcweir 	//______________________________________________________________________________
188*cdf0e10cSrcweir     inline sal_Int32 SAL_CALL StreamPipe::read(void* pBuffer, sal_Int32 n) const
189*cdf0e10cSrcweir 	{
190*cdf0e10cSrcweir 		return osl_readPipe( m_handle, pBuffer, n );
191*cdf0e10cSrcweir 	}
192*cdf0e10cSrcweir 
193*cdf0e10cSrcweir 	//______________________________________________________________________________
194*cdf0e10cSrcweir     inline sal_Int32 SAL_CALL StreamPipe::write(const void* pBuffer, sal_Int32 n) const
195*cdf0e10cSrcweir 	{
196*cdf0e10cSrcweir 		return osl_writePipe( m_handle, pBuffer , n );
197*cdf0e10cSrcweir 	}
198*cdf0e10cSrcweir 
199*cdf0e10cSrcweir 	//______________________________________________________________________________
200*cdf0e10cSrcweir 	inline sal_Int32 SAL_CALL StreamPipe::recv(void* pBuffer, sal_Int32 BytesToRead) const
201*cdf0e10cSrcweir 	{
202*cdf0e10cSrcweir 		return osl_receivePipe( m_handle, pBuffer , BytesToRead );
203*cdf0e10cSrcweir 	}
204*cdf0e10cSrcweir 
205*cdf0e10cSrcweir 	//______________________________________________________________________________
206*cdf0e10cSrcweir 	inline sal_Int32 SAL_CALL StreamPipe::send(const void* pBuffer, sal_Int32 BytesToSend) const
207*cdf0e10cSrcweir 	{
208*cdf0e10cSrcweir 		return osl_sendPipe( m_handle, pBuffer , BytesToSend );
209*cdf0e10cSrcweir 	}
210*cdf0e10cSrcweir 
211*cdf0e10cSrcweir }
212*cdf0e10cSrcweir #endif
213