summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/ios/StreamConnector.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/Ice/ios/StreamConnector.cpp')
-rw-r--r--cpp/src/Ice/ios/StreamConnector.cpp33
1 files changed, 8 insertions, 25 deletions
diff --git a/cpp/src/Ice/ios/StreamConnector.cpp b/cpp/src/Ice/ios/StreamConnector.cpp
index 3863e29b63a..e3a19519eca 100644
--- a/cpp/src/Ice/ios/StreamConnector.cpp
+++ b/cpp/src/Ice/ios/StreamConnector.cpp
@@ -12,6 +12,7 @@
#include "StreamConnector.h"
#include <Ice/Network.h>
+#include <Ice/UniqueRef.h>
#include <Ice/Exception.h>
#include <Ice/Properties.h>
#include <Ice/NetworkProxy.h>
@@ -25,31 +26,13 @@ using namespace IceInternal;
TransceiverPtr
IceObjC::StreamConnector::connect()
{
- CFReadStreamRef readStream = nil;
- CFWriteStreamRef writeStream = nil;
- try
- {
- CFStringRef h = CFStringCreateWithCString(ICE_NULLPTR, _host.c_str(), kCFStringEncodingUTF8);
- CFHostRef host = CFHostCreateWithName(ICE_NULLPTR, h);
- CFRelease(h);
- CFStreamCreatePairWithSocketToCFHost(ICE_NULLPTR, host, _port, &readStream, &writeStream);
- CFRelease(host);
-
- _instance->setupStreams(readStream, writeStream, false, _host);
- return new StreamTransceiver(_instance, readStream, writeStream, _host, _port);
- }
- catch(const Ice::LocalException& ex)
- {
- if(readStream)
- {
- CFRelease(readStream);
- }
- if(writeStream)
- {
- CFRelease(writeStream);
- }
- throw;
- }
+ UniqueRef<CFReadStreamRef> readStream;
+ UniqueRef<CFWriteStreamRef> writeStream;
+ UniqueRef<CFStringRef> h(CFStringCreateWithCString(ICE_NULLPTR, _host.c_str(), kCFStringEncodingUTF8));
+ UniqueRef<CFHostRef> host(CFHostCreateWithName(ICE_NULLPTR, h.get()));
+ CFStreamCreatePairWithSocketToCFHost(ICE_NULLPTR, host.get(), _port, &readStream.get(), &writeStream.get());
+ _instance->setupStreams(readStream.get(), writeStream.get(), false, _host);
+ return new StreamTransceiver(_instance, readStream.release(), writeStream.release(), _host, _port);
}
Short