(ixwebsocket) use a C++11 compatible make_unique shim
This commit is contained in:
		@@ -2,6 +2,10 @@
 | 
			
		||||
 | 
			
		||||
All changes to this project will be documented in this file.
 | 
			
		||||
 | 
			
		||||
## [11.0.2] - 2020-11-15
 | 
			
		||||
 | 
			
		||||
(ixwebsocket) use a C++11 compatible make_unique shim
 | 
			
		||||
 | 
			
		||||
## [11.0.1] - 2020-11-11
 | 
			
		||||
 | 
			
		||||
(socket) replace a std::vector with an std::array used as a tmp buffer in Socket::readBytes
 | 
			
		||||
 
 | 
			
		||||
@@ -6,6 +6,7 @@
 | 
			
		||||
 | 
			
		||||
#include "IXSelectInterruptFactory.h"
 | 
			
		||||
 | 
			
		||||
#include "IXUniquePtr.h"
 | 
			
		||||
#if defined(__linux__) || defined(__APPLE__)
 | 
			
		||||
#include "IXSelectInterruptPipe.h"
 | 
			
		||||
#else
 | 
			
		||||
@@ -17,9 +18,9 @@ namespace ix
 | 
			
		||||
    SelectInterruptPtr createSelectInterrupt()
 | 
			
		||||
    {
 | 
			
		||||
#if defined(__linux__) || defined(__APPLE__)
 | 
			
		||||
        return std::make_unique<SelectInterruptPipe>();
 | 
			
		||||
        return ix::make_unique<SelectInterruptPipe>();
 | 
			
		||||
#else
 | 
			
		||||
        return std::make_unique<SelectInterrupt>();
 | 
			
		||||
        return ix::make_unique<SelectInterrupt>();
 | 
			
		||||
#endif
 | 
			
		||||
    }
 | 
			
		||||
} // namespace ix
 | 
			
		||||
 
 | 
			
		||||
@@ -10,6 +10,7 @@
 | 
			
		||||
#include "IXNetSystem.h"
 | 
			
		||||
#include "IXSelectInterrupt.h"
 | 
			
		||||
#include "IXSocket.h"
 | 
			
		||||
#include "IXUniquePtr.h"
 | 
			
		||||
#include <fcntl.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#include <sys/types.h>
 | 
			
		||||
@@ -65,7 +66,7 @@ namespace ix
 | 
			
		||||
 | 
			
		||||
            int timeoutMs = 10;
 | 
			
		||||
            bool readyToRead = false;
 | 
			
		||||
            auto selectInterrupt = std::make_unique<SelectInterrupt>();
 | 
			
		||||
            auto selectInterrupt = ix::make_unique<SelectInterrupt>();
 | 
			
		||||
            PollResultType pollResult = Socket::poll(readyToRead, timeoutMs, fd, selectInterrupt);
 | 
			
		||||
 | 
			
		||||
            if (pollResult == PollResultType::Timeout)
 | 
			
		||||
 
 | 
			
		||||
@@ -6,6 +6,7 @@
 | 
			
		||||
 | 
			
		||||
#include "IXSocketFactory.h"
 | 
			
		||||
 | 
			
		||||
#include "IXUniquePtr.h"
 | 
			
		||||
#ifdef IXWEBSOCKET_USE_TLS
 | 
			
		||||
 | 
			
		||||
#ifdef IXWEBSOCKET_USE_MBED_TLS
 | 
			
		||||
@@ -35,17 +36,17 @@ namespace ix
 | 
			
		||||
 | 
			
		||||
        if (!tls)
 | 
			
		||||
        {
 | 
			
		||||
            socket = std::make_unique<Socket>(fd);
 | 
			
		||||
            socket = ix::make_unique<Socket>(fd);
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
        {
 | 
			
		||||
#ifdef IXWEBSOCKET_USE_TLS
 | 
			
		||||
#if defined(IXWEBSOCKET_USE_MBED_TLS)
 | 
			
		||||
            socket = std::make_unique<SocketMbedTLS>(tlsOptions, fd);
 | 
			
		||||
            socket = ix::make_unique<SocketMbedTLS>(tlsOptions, fd);
 | 
			
		||||
#elif defined(IXWEBSOCKET_USE_OPEN_SSL)
 | 
			
		||||
            socket = std::make_unique<SocketOpenSSL>(tlsOptions, fd);
 | 
			
		||||
            socket = ix::make_unique<SocketOpenSSL>(tlsOptions, fd);
 | 
			
		||||
#elif defined(__APPLE__)
 | 
			
		||||
            socket = std::make_unique<SocketAppleSSL>(tlsOptions, fd);
 | 
			
		||||
            socket = ix::make_unique<SocketAppleSSL>(tlsOptions, fd);
 | 
			
		||||
#endif
 | 
			
		||||
#else
 | 
			
		||||
            errorMsg = "TLS support is not enabled on this platform.";
 | 
			
		||||
 
 | 
			
		||||
@@ -10,6 +10,7 @@
 | 
			
		||||
#include "IXSocketOpenSSL.h"
 | 
			
		||||
 | 
			
		||||
#include "IXSocketConnect.h"
 | 
			
		||||
#include "IXUniquePtr.h"
 | 
			
		||||
#include <cassert>
 | 
			
		||||
#include <errno.h>
 | 
			
		||||
#ifdef _WIN32
 | 
			
		||||
@@ -86,7 +87,7 @@ namespace ix
 | 
			
		||||
    std::atomic<bool> SocketOpenSSL::_openSSLInitializationSuccessful(false);
 | 
			
		||||
    std::once_flag SocketOpenSSL::_openSSLInitFlag;
 | 
			
		||||
    std::unique_ptr<std::mutex[]> SocketOpenSSL::_openSSLMutexes =
 | 
			
		||||
        std::make_unique<std::mutex[]>(CRYPTO_num_locks());
 | 
			
		||||
        ix::make_unique<std::mutex[]>(CRYPTO_num_locks());
 | 
			
		||||
 | 
			
		||||
    SocketOpenSSL::SocketOpenSSL(const SocketTLSOptions& tlsOptions, int fd)
 | 
			
		||||
        : Socket(fd)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										18
									
								
								ixwebsocket/IXUniquePtr.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								ixwebsocket/IXUniquePtr.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
			
		||||
/*
 | 
			
		||||
 *  IXUniquePtr.h
 | 
			
		||||
 *  Author: Benjamin Sergeant
 | 
			
		||||
 *  Copyright (c) 2020 Machine Zone, Inc. All rights reserved.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
#include <memory>
 | 
			
		||||
 | 
			
		||||
namespace ix
 | 
			
		||||
{
 | 
			
		||||
    template<typename T, typename... Args>
 | 
			
		||||
    std::unique_ptr<T> make_unique(Args&&... args)
 | 
			
		||||
    {
 | 
			
		||||
        return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
 | 
			
		||||
    }
 | 
			
		||||
} // namespace ix
 | 
			
		||||
@@ -8,6 +8,7 @@
 | 
			
		||||
 | 
			
		||||
#include "IXExponentialBackoff.h"
 | 
			
		||||
#include "IXSetThreadName.h"
 | 
			
		||||
#include "IXUniquePtr.h"
 | 
			
		||||
#include "IXUtf8Validator.h"
 | 
			
		||||
#include "IXWebSocketHandshake.h"
 | 
			
		||||
#include <cassert>
 | 
			
		||||
@@ -34,7 +35,7 @@ namespace ix
 | 
			
		||||
        _ws.setOnCloseCallback(
 | 
			
		||||
            [this](uint16_t code, const std::string& reason, size_t wireSize, bool remote) {
 | 
			
		||||
                _onMessageCallback(
 | 
			
		||||
                    std::make_unique<WebSocketMessage>(WebSocketMessageType::Close,
 | 
			
		||||
                    ix::make_unique<WebSocketMessage>(WebSocketMessageType::Close,
 | 
			
		||||
                                                      "",
 | 
			
		||||
                                                      wireSize,
 | 
			
		||||
                                                      WebSocketErrorInfo(),
 | 
			
		||||
@@ -195,7 +196,7 @@ namespace ix
 | 
			
		||||
            return status;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        _onMessageCallback(std::make_unique<WebSocketMessage>(
 | 
			
		||||
        _onMessageCallback(ix::make_unique<WebSocketMessage>(
 | 
			
		||||
            WebSocketMessageType::Open,
 | 
			
		||||
            "",
 | 
			
		||||
            0,
 | 
			
		||||
@@ -227,7 +228,7 @@ namespace ix
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        _onMessageCallback(
 | 
			
		||||
            std::make_unique<WebSocketMessage>(WebSocketMessageType::Open,
 | 
			
		||||
            ix::make_unique<WebSocketMessage>(WebSocketMessageType::Open,
 | 
			
		||||
                                              "",
 | 
			
		||||
                                              0,
 | 
			
		||||
                                              WebSocketErrorInfo(),
 | 
			
		||||
@@ -312,7 +313,7 @@ namespace ix
 | 
			
		||||
                connectErr.reason = status.errorStr;
 | 
			
		||||
                connectErr.http_status = status.http_status;
 | 
			
		||||
 | 
			
		||||
                _onMessageCallback(std::make_unique<WebSocketMessage>(WebSocketMessageType::Error,
 | 
			
		||||
                _onMessageCallback(ix::make_unique<WebSocketMessage>(WebSocketMessageType::Error,
 | 
			
		||||
                                                                     "",
 | 
			
		||||
                                                                     0,
 | 
			
		||||
                                                                     connectErr,
 | 
			
		||||
@@ -388,7 +389,7 @@ namespace ix
 | 
			
		||||
 | 
			
		||||
                    bool binary = messageKind == WebSocketTransport::MessageKind::MSG_BINARY;
 | 
			
		||||
 | 
			
		||||
                    _onMessageCallback(std::make_unique<WebSocketMessage>(webSocketMessageType,
 | 
			
		||||
                    _onMessageCallback(ix::make_unique<WebSocketMessage>(webSocketMessageType,
 | 
			
		||||
                                                                         msg,
 | 
			
		||||
                                                                         wireSize,
 | 
			
		||||
                                                                         webSocketErrorInfo,
 | 
			
		||||
 
 | 
			
		||||
@@ -48,14 +48,15 @@
 | 
			
		||||
 | 
			
		||||
#include "IXWebSocketPerMessageDeflate.h"
 | 
			
		||||
 | 
			
		||||
#include "IXUniquePtr.h"
 | 
			
		||||
#include "IXWebSocketPerMessageDeflateCodec.h"
 | 
			
		||||
#include "IXWebSocketPerMessageDeflateOptions.h"
 | 
			
		||||
 | 
			
		||||
namespace ix
 | 
			
		||||
{
 | 
			
		||||
    WebSocketPerMessageDeflate::WebSocketPerMessageDeflate()
 | 
			
		||||
        : _compressor(std::make_unique<WebSocketPerMessageDeflateCompressor>())
 | 
			
		||||
        , _decompressor(std::make_unique<WebSocketPerMessageDeflateDecompressor>())
 | 
			
		||||
        : _compressor(ix::make_unique<WebSocketPerMessageDeflateCompressor>())
 | 
			
		||||
        , _decompressor(ix::make_unique<WebSocketPerMessageDeflateDecompressor>())
 | 
			
		||||
    {
 | 
			
		||||
        ;
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -36,6 +36,7 @@
 | 
			
		||||
 | 
			
		||||
#include "IXSocketFactory.h"
 | 
			
		||||
#include "IXSocketTLSOptions.h"
 | 
			
		||||
#include "IXUniquePtr.h"
 | 
			
		||||
#include "IXUrlParser.h"
 | 
			
		||||
#include "IXUtf8Validator.h"
 | 
			
		||||
#include "IXWebSocketHandshake.h"
 | 
			
		||||
@@ -124,7 +125,7 @@ namespace ix
 | 
			
		||||
            std::string errorMsg;
 | 
			
		||||
            bool tls = protocol == "wss";
 | 
			
		||||
            _socket = createSocket(tls, -1, errorMsg, _socketTLSOptions);
 | 
			
		||||
            _perMessageDeflate = std::make_unique<WebSocketPerMessageDeflate>();
 | 
			
		||||
            _perMessageDeflate = ix::make_unique<WebSocketPerMessageDeflate>();
 | 
			
		||||
 | 
			
		||||
            if (!_socket)
 | 
			
		||||
            {
 | 
			
		||||
@@ -177,7 +178,7 @@ namespace ix
 | 
			
		||||
        _blockingSend = true;
 | 
			
		||||
 | 
			
		||||
        _socket = std::move(socket);
 | 
			
		||||
        _perMessageDeflate = std::make_unique<WebSocketPerMessageDeflate>();
 | 
			
		||||
        _perMessageDeflate = ix::make_unique<WebSocketPerMessageDeflate>();
 | 
			
		||||
 | 
			
		||||
        WebSocketHandshake webSocketHandshake(_requestInitCancellation,
 | 
			
		||||
                                              _socket,
 | 
			
		||||
 
 | 
			
		||||
@@ -6,4 +6,4 @@
 | 
			
		||||
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
#define IX_WEBSOCKET_VERSION "11.0.1"
 | 
			
		||||
#define IX_WEBSOCKET_VERSION "11.0.2"
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user