summaryrefslogtreecommitdiff
path: root/src/socket.cpp
diff options
context:
space:
mode:
authorMike Buland <eichlan@xagasoft.com>2007-06-18 19:42:34 +0000
committerMike Buland <eichlan@xagasoft.com>2007-06-18 19:42:34 +0000
commit8b12972092777af56ae21f65b41f4c40d52c2367 (patch)
tree3ee45c4b69899acb0cdbd013ea8e6ea54bcdc023 /src/socket.cpp
parent5292e5831934dc719d1ac06332bd252abe4ac3bc (diff)
downloadlibbu++-8b12972092777af56ae21f65b41f4c40d52c2367.tar.gz
libbu++-8b12972092777af56ae21f65b41f4c40d52c2367.tar.bz2
libbu++-8b12972092777af56ae21f65b41f4c40d52c2367.tar.xz
libbu++-8b12972092777af56ae21f65b41f4c40d52c2367.zip
Added the protocol class. servers work, but don't send data, updated the streams
to include many more state indicators and caps queries, and everything is working better in general.
Diffstat (limited to 'src/socket.cpp')
-rw-r--r--src/socket.cpp48
1 files changed, 40 insertions, 8 deletions
diff --git a/src/socket.cpp b/src/socket.cpp
index 1832898..bd05024 100644
--- a/src/socket.cpp
+++ b/src/socket.cpp
@@ -109,13 +109,6 @@ void Bu::Socket::close()
109 ::close( nSocket ); 109 ::close( nSocket );
110 } 110 }
111 bActive = false; 111 bActive = false;
112 //xInputBuf.clearData();
113 //xOutputBuf.clearData();
114 //if( pProtocol != NULL )
115 //{
116 // delete pProtocol;
117 // pProtocol = NULL;
118 //}
119} 112}
120 113
121/* 114/*
@@ -218,15 +211,49 @@ bool Bu::Socket::isEOS()
218 211
219bool Bu::Socket::canRead() 212bool Bu::Socket::canRead()
220{ 213{
214 fd_set rfds;
215 FD_ZERO(&rfds);
216 FD_SET(nSocket, &rfds);
217 struct timeval tv = { 0, 0 };
218 int retval = select( nSocket+1, &rfds, NULL, NULL, &tv );
219 if( retval == -1 )
220 throw ConnectionException(
221 excodeBadReadError,
222 "Bad Read error"
223 );
224 if( !FD_ISSET( nSocket, &rfds ) )
225 return false;
221 return true; 226 return true;
222} 227}
223 228
224bool Bu::Socket::canWrite() 229bool Bu::Socket::canWrite()
225{ 230{
231 fd_set wfds;
232 FD_ZERO(&wfds);
233 FD_SET(nSocket, &wfds);
234 struct timeval tv = { 0, 0 };
235 int retval = select( nSocket+1, NULL, &wfds, NULL, &tv );
236 if( retval == -1 )
237 throw ConnectionException(
238 excodeBadReadError,
239 "Bad Read error"
240 );
241 if( !FD_ISSET( nSocket, &wfds ) )
242 return false;
226 return true; 243 return true;
227} 244}
228 245
229bool Bu::Socket::canSeek() 246bool Bu::Socket::isReadable()
247{
248 return true;
249}
250
251bool Bu::Socket::isWritable()
252{
253 return true;
254}
255
256bool Bu::Socket::isSeekable()
230{ 257{
231 return false; 258 return false;
232} 259}
@@ -244,3 +271,8 @@ void Bu::Socket::flush()
244{ 271{
245} 272}
246 273
274bool Bu::Socket::isOpen()
275{
276 return bActive;
277}
278