struct CCL::Net::ISocket

Overview

Network socket interface. More…

#include <isocket.h>

struct ISocket: public CCL::IUnknown
{
    // methods

    virtual tresult CCL_API connect (const SocketAddress& address) = 0;
    virtual tresult CCL_API disconnect () = 0;
    virtual tbool CCL_API isConnected () = 0;
    virtual tresult CCL_API getPeerAddress (SocketAddress& address) = 0;
    virtual tresult CCL_API bind (const SocketAddress& address) = 0;
    virtual tresult CCL_API listen (int maxConnections) = 0;
    virtual ISocket*CCL_API accept () = 0;
    virtual tresult CCL_API getLocalAddress (SocketAddress& address) = 0;
    virtual tresult CCL_API setOption (int option, VariantRef value) = 0;
    virtual tbool CCL_API isReadable (int timeout = 0) = 0;
    virtual tbool CCL_API isWritable (int timeout = 0) = 0;
    virtual tbool CCL_API isAnyError (int timeout = 0) = 0;
    virtual int CCL_API send (const void* buffer, int size, int flags = 0) = 0;
    virtual int CCL_API receive (void* buffer, int size, int flags = 0) = 0;

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

    virtual int CCL_API receiveFrom (
        void* buffer,
        int size,
        SocketAddress& address,
        int flags = 0
    ) = 0;

    virtual tbool CCL_API wouldBlockOperation (tbool writeDirection) = 0;
};

Inherited Members

public:
    // methods

    virtual tresult CCL_API queryInterface (UIDRef iid, void** ptr) = 0;
    virtual unsigned int CCL_API retain () = 0;
    virtual unsigned int CCL_API release () = 0;

Detailed Documentation

Network socket interface.

Methods

virtual tresult CCL_API connect (const SocketAddress& address) = 0

Establish connection to specified host.

virtual tresult CCL_API disconnect () = 0

Close socket connection.

virtual tbool CCL_API isConnected () = 0

Returns true if socket is currently connected.

virtual tresult CCL_API getPeerAddress (SocketAddress& address) = 0

Retrieve address of peer this socket is connected to.

virtual tresult CCL_API bind (const SocketAddress& address) = 0

Bind socket to specified local address.

virtual tresult CCL_API listen (int maxConnections) = 0

Place socket into listening state, waiting for incoming connections.

virtual ISocket*CCL_API accept () = 0

Permit incoming connection attempt.

Returned socket must be released!

virtual tresult CCL_API getLocalAddress (SocketAddress& address) = 0

Retrieve local address of this socket.

virtual tresult CCL_API setOption (int option, VariantRef value) = 0

Set socket option.

virtual tbool CCL_API isReadable (int timeout = 0) = 0

Check if socket is readable (data available, incoming connection, connection closed).

virtual tbool CCL_API isWritable (int timeout = 0) = 0

Check if socket is writable (connection succeeded, data can be sent).

virtual tbool CCL_API isAnyError (int timeout = 0) = 0

Check for socket errors (connection attempt failed).

virtual int CCL_API send (const void* buffer, int size, int flags = 0) = 0

Send data to socket.

virtual int CCL_API receive (void* buffer, int size, int flags = 0) = 0

Receive data from socket.

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

Send data to specified destination, used for connectionless sockets.

virtual int CCL_API receiveFrom (
    void* buffer,
    int size,
    SocketAddress& address,
    int flags = 0
) = 0

Receive data from socket, used for connectionless sockets.

virtual tbool CCL_API wouldBlockOperation (tbool writeDirection) = 0

Returns true if last socket operation exited because it would block.