summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gatosocket.cpp3
-rw-r--r--gatosocket.h10
2 files changed, 12 insertions, 1 deletions
diff --git a/gatosocket.cpp b/gatosocket.cpp
index e46a811..c29b154 100644
--- a/gatosocket.cpp
+++ b/gatosocket.cpp
@@ -90,6 +90,7 @@ bool GatoSocket::connectTo(const GatoAddress &addr, unsigned short cid)
void GatoSocket::close()
{
if (s != StateDisconnected) {
+ // TODO We do not flush the writeQueue, but rather drop all data.
delete readNotifier;
delete writeNotifier;
readQueue.clear();
@@ -144,7 +145,7 @@ void GatoSocket::readNotify()
int read = ::read(fd, buf.data(), buf.size());
if (read < 0) {
- qErrnoWarning("Could not read to L2 socket");
+ qErrnoWarning("Could not read from L2 socket");
close();
return;
} else if (read == 0) {
diff --git a/gatosocket.h b/gatosocket.h
index 6bb6998..4b4afbf 100644
--- a/gatosocket.h
+++ b/gatosocket.h
@@ -7,6 +7,7 @@
#include "gatoaddress.h"
+/** This class encapsulates a message-oriented bluetooth L2CAP socket. */
class GatoSocket : public QObject
{
Q_OBJECT
@@ -22,17 +23,26 @@ public:
StateConnected
};
+ enum Error {
+ TimeoutError,
+ UnknownError
+ };
+
State state() const;
bool connectTo(const GatoAddress &addr, unsigned short cid);
void close();
+ /** Dequeues a pending message from the rx queue.
+ * Doesn't block: if there are no pending messages, returns null QByteArray. */
QByteArray receive();
+ /** Adds a message to the tx queue. */
void send(const QByteArray &pkt);
signals:
void connected();
void disconnected();
+ void error(Error error);
void readyRead();
private: