class Core::Sockets::SSLSocket

#include <coresslsocket.h>

class SSLSocket:
    public Core::Sockets::Socket,
    private Core::Sockets::SSLContextIOHandler
{
public:
    // construction

    SSLSocket(AddressFamily addressFamily = kInternet);

    // methods

    void setPeerName(CStringPtr peerName);
    SSLResult handshake();
    SSLResult close();
    SSLResult sendSSL(const void* buffer, int size, int& bytesSend);
    SSLResult receiveSSL(void* buffer, int size, int& bytesReceived);
};

Inherited Members

public:
    // methods

    SocketID getDescriptor() const;
    bool connect(const SocketAddress& address);
    bool disconnect();
    bool isConnected() const;
    bool bind(const SocketAddress& address);
    bool listen(int maxConnections);
    SocketID accept();
    bool getPeerAddress(SocketAddress& address) const;
    bool getLocalAddress(SocketAddress& address) const;
    bool setOption(int option, int value);
    bool getOption(int& value, int option) const;

    bool joinMulticastGroup(
        const IPAddress& groupAddress,
        const IPAddress& adapterAddress
    );

    bool leaveMulticastGroup(
        const IPAddress& groupAddress,
        const IPAddress& adapterAddress
    );

    bool isReadable(int timeout = 0) const;
    bool isWritable(int timeout = 0) const;
    bool isAnyError(int timeout = 0) const;
    int send(const void* buffer, int size, int flags = 0);
    int sendAll(const void* buffer, int size, int flags = 0);
    int receive(void* buffer, int size, int flags = 0);
    int getBytesAvailable(int& bytesAvailable);

    int sendTo(
        const void* buffer,
        int size,
        const SocketAddress& address,
        int flags = 0
    );

    int receiveFrom(void* buffer, int size, SocketAddress& address, int flags = 0);
    int getErrorCode() const;
    bool wouldBlockOperation(bool writeDirection) const;

    static int select(
        SocketID highestSocket,
        SocketIDSet* readList,
        SocketIDSet* writeList,
        SocketIDSet* errorList,
        int timeout
    );

    virtual SSLResult write(const void* buffer, int size, int& bytesWritten) = 0;
    virtual SSLResult read(void* buffer, int size, int& bytesRead) = 0;
    virtual SSLResult write(const void* buffer, int size, int& bytesWritten) = 0;
    virtual SSLResult read(void* buffer, int size, int& bytesRead) = 0;