]> git.saurik.com Git - wxWidgets.git/blob - src/common/sckstrm.cpp
CanRead() now restores the stream to its previous state (potential
[wxWidgets.git] / src / common / sckstrm.cpp
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: sckstrm.h
3 // Purpose: wxSocket*Stream
4 // Author: Guilhem Lavaux
5 // Modified by:
6 // Created: 17/07/97
7 // RCS-ID: $Id$
8 // Copyright: (c)
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
11 #ifdef __GNUG__
12 #pragma implementation "sckstrm.h"
13 #endif
14
15 // For compilers that support precompilation, includes "wx.h".
16 #include "wx/wxprec.h"
17
18 #ifdef __BORLANDC__
19 #pragma hdrstop
20 #endif
21
22 #ifndef WX_PRECOMP
23 #include "wx/defs.h"
24 #endif
25
26 #if wxUSE_SOCKETS && wxUSE_STREAMS
27
28 #include "wx/stream.h"
29 #include "wx/socket.h"
30 #include "wx/sckstrm.h"
31
32 // ---------------------------------------------------------------------------
33 // wxSocketOutputStream
34 // ---------------------------------------------------------------------------
35
36 wxSocketOutputStream::wxSocketOutputStream(wxSocketBase& s)
37 : m_o_socket(&s)
38 {
39 }
40
41 wxSocketOutputStream::~wxSocketOutputStream()
42 {
43 }
44
45 size_t wxSocketOutputStream::OnSysWrite(const void *buffer, size_t size)
46 {
47 size_t ret;
48
49 ret = m_o_socket->Write((const char *)buffer, size).LastCount();
50 switch (m_o_socket->LastError()) {
51 case GSOCK_NOERROR:
52 m_lasterror = wxStream_NOERROR;
53 break;
54 default:
55 m_lasterror = wxStream_READ_ERR;
56 break;
57 }
58 return ret;
59
60 }
61
62 // ---------------------------------------------------------------------------
63 // wxSocketInputStream
64 // ---------------------------------------------------------------------------
65
66 wxSocketInputStream::wxSocketInputStream(wxSocketBase& s)
67 : m_i_socket(&s)
68 {
69 }
70
71 wxSocketInputStream::~wxSocketInputStream()
72 {
73 }
74
75 size_t wxSocketInputStream::OnSysRead(void *buffer, size_t size)
76 {
77 size_t ret;
78
79 ret = m_i_socket->Read((char *)buffer, size).LastCount();
80 switch (m_i_socket->LastError()) {
81 case GSOCK_NOERROR:
82 m_lasterror = wxStream_NOERROR;
83 break;
84 default:
85 m_lasterror = wxStream_WRITE_ERR;
86 break;
87 }
88 return ret;
89 }
90
91 // ---------------------------------------------------------------------------
92 // wxSocketStream
93 // ---------------------------------------------------------------------------
94
95 wxSocketStream::wxSocketStream(wxSocketBase& s)
96 : wxSocketInputStream(s), wxSocketOutputStream(s)
97 {
98 }
99
100 wxSocketStream::~wxSocketStream()
101 {
102 }
103
104 #endif
105 // wxUSE_STREAMS && wxUSE_SOCKETS