xref: /aoo4110/main/sal/qa/osl/socket/sockethelper.hxx (revision b1cdbd2c)
1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
24*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
25*b1cdbd2cSJim Jagielski 
26*b1cdbd2cSJim Jagielski #ifndef _SOCKETHELPER_HXX_
27*b1cdbd2cSJim Jagielski #define _SOCKETHELPER_HXX_
28*b1cdbd2cSJim Jagielski 
29*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
30*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
31*b1cdbd2cSJim Jagielski #include <sal/types.h>
32*b1cdbd2cSJim Jagielski #include <rtl/textenc.h>
33*b1cdbd2cSJim Jagielski #include <rtl/ustring.hxx>
34*b1cdbd2cSJim Jagielski #include <rtl/ustring.h>
35*b1cdbd2cSJim Jagielski 
36*b1cdbd2cSJim Jagielski #ifndef _OSL_SOCLET_HXX_
37*b1cdbd2cSJim Jagielski #include <osl/socket.hxx>
38*b1cdbd2cSJim Jagielski #endif
39*b1cdbd2cSJim Jagielski #include <osl/socket.h>
40*b1cdbd2cSJim Jagielski 
41*b1cdbd2cSJim Jagielski #ifndef _OSL_THREAD_HXX
42*b1cdbd2cSJim Jagielski #include <osl/thread.hxx>
43*b1cdbd2cSJim Jagielski #endif
44*b1cdbd2cSJim Jagielski 
45*b1cdbd2cSJim Jagielski #ifndef _OSL_FILE_HXX
46*b1cdbd2cSJim Jagielski #include <osl/file.hxx>
47*b1cdbd2cSJim Jagielski #endif
48*b1cdbd2cSJim Jagielski 
49*b1cdbd2cSJim Jagielski #ifndef _OSL_MUTEX_HXX
50*b1cdbd2cSJim Jagielski #include <osl/mutex.hxx>
51*b1cdbd2cSJim Jagielski #endif
52*b1cdbd2cSJim Jagielski #include <osl/time.h>
53*b1cdbd2cSJim Jagielski 
54*b1cdbd2cSJim Jagielski #ifdef __cplusplus
55*b1cdbd2cSJim Jagielski extern "C"
56*b1cdbd2cSJim Jagielski {
57*b1cdbd2cSJim Jagielski #endif
58*b1cdbd2cSJim Jagielski 
59*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
60*b1cdbd2cSJim Jagielski // OS dependent declaration and includes
61*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
62*b1cdbd2cSJim Jagielski #if ( defined UNX ) || ( defined OS2 )  //Unix
63*b1cdbd2cSJim Jagielski 
64*b1cdbd2cSJim Jagielski #include <unistd.h>
65*b1cdbd2cSJim Jagielski #include <limits.h>
66*b1cdbd2cSJim Jagielski #include <string.h>
67*b1cdbd2cSJim Jagielski #include <math.h>
68*b1cdbd2cSJim Jagielski #include <errno.h>
69*b1cdbd2cSJim Jagielski #include <fcntl.h>
70*b1cdbd2cSJim Jagielski #include <sys/stat.h>
71*b1cdbd2cSJim Jagielski #include <sys/statfs.h>
72*b1cdbd2cSJim Jagielski #include <sys/statvfs.h>
73*b1cdbd2cSJim Jagielski #include <sys/types.h>
74*b1cdbd2cSJim Jagielski #include <sys/socket.h>
75*b1cdbd2cSJim Jagielski #include <netdb.h>
76*b1cdbd2cSJim Jagielski #include <netinet/in.h>
77*b1cdbd2cSJim Jagielski #include <arpa/inet.h>
78*b1cdbd2cSJim Jagielski #include <sys/wait.h>
79*b1cdbd2cSJim Jagielski #endif
80*b1cdbd2cSJim Jagielski 
81*b1cdbd2cSJim Jagielski #ifndef _OSL_SOCKET_CONST_H_
82*b1cdbd2cSJim Jagielski 
83*b1cdbd2cSJim Jagielski #if ( defined WNT )                     // Windows
84*b1cdbd2cSJim Jagielski #include <tools/prewin.h>
85*b1cdbd2cSJim Jagielski // #include <windows.h>
86*b1cdbd2cSJim Jagielski #include <winsock.h>
87*b1cdbd2cSJim Jagielski #include <string.h>
88*b1cdbd2cSJim Jagielski #include <tools/postwin.h>
89*b1cdbd2cSJim Jagielski #endif
90*b1cdbd2cSJim Jagielski 
91*b1cdbd2cSJim Jagielski #endif
92*b1cdbd2cSJim Jagielski 
93*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
94*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------
95*b1cdbd2cSJim Jagielski 
96*b1cdbd2cSJim Jagielski #ifdef __cplusplus
97*b1cdbd2cSJim Jagielski }
98*b1cdbd2cSJim Jagielski #endif
99*b1cdbd2cSJim Jagielski 
100*b1cdbd2cSJim Jagielski /** compare two OUString.
101*b1cdbd2cSJim Jagielski */
102*b1cdbd2cSJim Jagielski sal_Bool compareUString( const ::rtl::OUString & ustr1, const ::rtl::OUString & ustr2 );
103*b1cdbd2cSJim Jagielski /** compare a OUString and an ASCII string.
104*b1cdbd2cSJim Jagielski */
105*b1cdbd2cSJim Jagielski sal_Bool compareUString( const ::rtl::OUString & ustr, const sal_Char *astr );
106*b1cdbd2cSJim Jagielski /** compare two socket address.
107*b1cdbd2cSJim Jagielski */
108*b1cdbd2cSJim Jagielski sal_Bool compareSocketAddr( const ::osl::SocketAddr & addr1 , const ::osl::SocketAddr & addr2  );
109*b1cdbd2cSJim Jagielski //char * oustring2char( const ::rtl::OUString & str );
110*b1cdbd2cSJim Jagielski /** print a UNI_CODE String. And also print some comments of the string.
111*b1cdbd2cSJim Jagielski */
112*b1cdbd2cSJim Jagielski void printUString( const ::rtl::OUString & str, const char * msg = "" );
113*b1cdbd2cSJim Jagielski /** get the local host name.
114*b1cdbd2cSJim Jagielski     mindy: gethostbyname( "localhost" ), on Linux, it returns the hostname in /etc/hosts + domain name,
115*b1cdbd2cSJim Jagielski     if no entry in /etc/hosts, it returns "localhost" + domain name
116*b1cdbd2cSJim Jagielski */
117*b1cdbd2cSJim Jagielski ::rtl::OUString getHost( void );
118*b1cdbd2cSJim Jagielski /** get the full host name of the current processor, such as "aegean.prc.sun.com" --mindyliu
119*b1cdbd2cSJim Jagielski */
120*b1cdbd2cSJim Jagielski ::rtl::OUString getThisHostname( void );
121*b1cdbd2cSJim Jagielski /** get IP by name, search /etc/hosts first, then search from dns, fail return OUString("")
122*b1cdbd2cSJim Jagielski */
123*b1cdbd2cSJim Jagielski ::rtl::OUString getIPbyName( rtl::OString const& str_name );
124*b1cdbd2cSJim Jagielski /** get local ethernet IP
125*b1cdbd2cSJim Jagielski */
126*b1cdbd2cSJim Jagielski ::rtl::OUString getLocalIP( );
127*b1cdbd2cSJim Jagielski /** construct error message
128*b1cdbd2cSJim Jagielski */
129*b1cdbd2cSJim Jagielski ::rtl::OUString outputError( const ::rtl::OUString & returnVal, const ::rtl::OUString & rightVal, const sal_Char * msg = "");
130*b1cdbd2cSJim Jagielski void thread_sleep( sal_Int32 _nSec );
131*b1cdbd2cSJim Jagielski /** print Boolean value.
132*b1cdbd2cSJim Jagielski */
133*b1cdbd2cSJim Jagielski void printBool( sal_Bool bOk );
134*b1cdbd2cSJim Jagielski /** print content of a ByteSequence.
135*b1cdbd2cSJim Jagielski */
136*b1cdbd2cSJim Jagielski void printByteSequence_IP( const ::rtl::ByteSequence & bsByteSeq, sal_Int32 nLen );
137*b1cdbd2cSJim Jagielski /** convert an IP which is stored as a UString format to a ByteSequence array for later use.
138*b1cdbd2cSJim Jagielski */
139*b1cdbd2cSJim Jagielski ::rtl::ByteSequence UStringIPToByteSequence( ::rtl::OUString aUStr );
140*b1cdbd2cSJim Jagielski /** print a socket result name.
141*b1cdbd2cSJim Jagielski */
142*b1cdbd2cSJim Jagielski void printSocketResult( oslSocketResult eResult );
143*b1cdbd2cSJim Jagielski /** if 4 parts of an IP addr are equal to specified values
144*b1cdbd2cSJim Jagielski */
145*b1cdbd2cSJim Jagielski sal_Bool ifIpv4is( const ::rtl::ByteSequence Ipaddr, sal_Int8 seq1, sal_Int8 seq2, sal_Int8 seq3, sal_Int8 seq4 );
146*b1cdbd2cSJim Jagielski /** if the IP or hostname is  availble( alive )
147*b1cdbd2cSJim Jagielski */
148*b1cdbd2cSJim Jagielski //sal_Bool ifAvailable( const char *  stringAddrOrHostName );
149*b1cdbd2cSJim Jagielski sal_Bool ifAvailable( rtl::OUString const&  strAddrOrHostName );
150*b1cdbd2cSJim Jagielski /*
151*b1cdbd2cSJim Jagielski class ClientSocketThread : public Thread
152*b1cdbd2cSJim Jagielski class ServerSocketThread : public Thread
153*b1cdbd2cSJim Jagielski class ValueCheckProvider
154*b1cdbd2cSJim Jagielski class ClientReadSocketThread : public Thread
155*b1cdbd2cSJim Jagielski class ServerWriteSocketThread : public Thread
156*b1cdbd2cSJim Jagielski class AcceptorThread : public Thread
157*b1cdbd2cSJim Jagielski class CloseSocketThread : public Thread
158*b1cdbd2cSJim Jagielski 
159*b1cdbd2cSJim Jagielski */
160*b1cdbd2cSJim Jagielski 
161*b1cdbd2cSJim Jagielski #endif
162