1 /**************************************************************
2 *
3 * Licensed to the Apache Software Foundation (ASF) under one
4 * or more contributor license agreements. See the NOTICE file
5 * distributed with this work for additional information
6 * regarding copyright ownership. The ASF licenses this file
7 * to you under the Apache License, Version 2.0 (the
8 * "License"); you may not use this file except in compliance
9 * with the License. You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing,
14 * software distributed under the License is distributed on an
15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16 * KIND, either express or implied. See the License for the
17 * specific language governing permissions and limitations
18 * under the License.
19 *
20 *************************************************************/
21
22
23
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_automation.hxx"
26
27 #include "tcpio.hxx"
28
29 /// implement ITransmiter
TransferBytes(const void * pBuffer,comm_UINT32 nLen)30 comm_USHORT TCPIO::TransferBytes( const void* pBuffer, comm_UINT32 nLen )
31 {
32 vos::OGuard aGuard( aMSocketWriteAccess );
33 if ( !pStreamSocket )
34 {
35 nLastSent = 0;
36 return C_ERROR_PERMANENT;
37 }
38 nLastSent = pStreamSocket->write( pBuffer, nLen );
39 if ( nLastSent == nLen )
40 return C_ERROR_NONE;
41 return C_ERROR_PERMANENT;
42 }
43
44
45 /// implement IReceiver
ReceiveBytes(void * pBuffer,comm_UINT32 nLen)46 comm_USHORT TCPIO::ReceiveBytes( void* pBuffer, comm_UINT32 nLen )
47 {
48 vos::OGuard aGuard( aMSocketReadAccess );
49 if ( !pStreamSocket )
50 {
51 nLastReceived = 0;
52 return C_ERROR_PERMANENT;
53 }
54 nLastReceived = pStreamSocket->read( pBuffer, nLen );
55 if ( nLastReceived == nLen )
56 return C_ERROR_NONE;
57 return C_ERROR_PERMANENT;
58 }
59
60
61 // helper
SetStreamSocket(vos::OStreamSocket * pSocket)62 void TCPIO::SetStreamSocket( vos::OStreamSocket *pSocket )
63 {
64 vos::OGuard aRGuard( aMSocketReadAccess );
65 vos::OGuard aWGuard( aMSocketWriteAccess );
66 pStreamSocket = pSocket;
67 }
68