/* * Copyright (c) 2012 Yoann Blein * Licensed under the simplified BSD license. * See Documentation/Licenses/BSD-simplified.txt for more information. */ #pragma once #include #include namespace Swift { class EventLoop; class HostAddress; class HostAddressPort; class UDPSocket { public: typedef boost::shared_ptr ref; virtual ~UDPSocket() {} virtual int bind(const HostAddressPort& addr) = 0; virtual int bindOnAvailablePort(const HostAddress& addr) = 0; virtual void listen() = 0; virtual void connect(const HostAddressPort& address) = 0; virtual void connectToFirstIncoming() = 0; virtual void send(const SafeByteArray& data) = 0; virtual void close() = 0; virtual HostAddressPort getLocalAddress() const = 0; virtual HostAddressPort getRemoteAddress() const = 0; public: boost::signal)> onDataRead; boost::signal onConnected; }; }