summaryrefslogtreecommitdiff
path: root/cpp/src/IceBT/StreamSocket.cpp
diff options
context:
space:
mode:
authorMark Spruiell <mes@zeroc.com>2015-11-20 12:16:36 -0800
committerMark Spruiell <mes@zeroc.com>2015-11-20 12:16:36 -0800
commite128779da2d66f7fc1d2e280b3fa4b9cf70a8339 (patch)
tree87d78542dce72245c7f755bf3e9f6588ebc6e5d8 /cpp/src/IceBT/StreamSocket.cpp
parentadding destroy() method to IceXML classes (diff)
downloadice-e128779da2d66f7fc1d2e280b3fa4b9cf70a8339.tar.bz2
ice-e128779da2d66f7fc1d2e280b3fa4b9cf70a8339.tar.xz
ice-e128779da2d66f7fc1d2e280b3fa4b9cf70a8339.zip
initial BlueZ 4 implementation
Diffstat (limited to 'cpp/src/IceBT/StreamSocket.cpp')
-rw-r--r--cpp/src/IceBT/StreamSocket.cpp42
1 files changed, 41 insertions, 1 deletions
diff --git a/cpp/src/IceBT/StreamSocket.cpp b/cpp/src/IceBT/StreamSocket.cpp
index 9f8e621bead..3d241f7eb7d 100644
--- a/cpp/src/IceBT/StreamSocket.cpp
+++ b/cpp/src/IceBT/StreamSocket.cpp
@@ -19,9 +19,24 @@ using namespace std;
using namespace Ice;
using namespace IceBT;
+IceBT::StreamSocket::StreamSocket(const InstancePtr& instance, const SocketAddress& addr) :
+ IceInternal::NativeInfo(createSocket()),
+ _instance(instance),
+ _addr(addr),
+ _state(StateNeedConnect)
+{
+ init();
+ if(doConnect(_fd, _addr))
+ {
+ _state = StateConnected;
+ }
+ _desc = fdToString(_fd);
+}
+
IceBT::StreamSocket::StreamSocket(const InstancePtr& instance, SOCKET fd) :
IceInternal::NativeInfo(fd),
- _instance(instance)
+ _instance(instance),
+ _state(StateConnected)
{
init();
_desc = fdToString(fd);
@@ -32,6 +47,31 @@ IceBT::StreamSocket::~StreamSocket()
assert(_fd == INVALID_SOCKET);
}
+IceInternal::SocketOperation
+IceBT::StreamSocket::connect(IceInternal::Buffer& readBuffer, IceInternal::Buffer& writeBuffer)
+{
+ if(_state == StateNeedConnect)
+ {
+ _state = StateConnectPending;
+ return IceInternal::SocketOperationConnect;
+ }
+ else if(_state <= StateConnectPending)
+ {
+ doFinishConnect(_fd);
+ _desc = fdToString(_fd);
+ _state = StateConnected;
+ }
+
+ assert(_state == StateConnected);
+ return IceInternal::SocketOperationNone;
+}
+
+bool
+IceBT::StreamSocket::isConnected()
+{
+ return _state == StateConnected;
+}
+
size_t
IceBT::StreamSocket::getSendPacketSize(size_t length)
{