⛏️ index : haiku.git

/*
 * Copyright 2011, Haiku, Inc. All Rights Reserved.
 * Distributed under the terms of the MIT License.
 */
#ifndef _DATAGRAM_SOCKET_H
#define _DATAGRAM_SOCKET_H


#include <AbstractSocket.h>


class BDatagramSocket : public BAbstractSocket {
public:
								BDatagramSocket();
								BDatagramSocket(const BNetworkAddress& peer,
									bigtime_t timeout = -1);
								BDatagramSocket(const BDatagramSocket& other);
	virtual						~BDatagramSocket();

	virtual	status_t			Bind(const BNetworkAddress& peer,
									bool reuseAddr = true);
	virtual	status_t			Connect(const BNetworkAddress& peer,
									bigtime_t timeout = B_INFINITE_TIMEOUT);

	virtual	status_t			Accept(BAbstractSocket*& _socket);

			status_t			SetBroadcast(bool broadcast);
			void				SetPeer(const BNetworkAddress& peer);

	virtual	size_t				MaxTransmissionSize() const;

	virtual	ssize_t				SendTo(const BNetworkAddress& address,
									const void* buffer, size_t size);
	virtual	ssize_t				ReceiveFrom(void* buffer, size_t bufferSize,
									BNetworkAddress& from);

	// BDataIO implementation

	virtual ssize_t				Read(void* buffer, size_t size);
	virtual ssize_t				Write(const void* buffer, size_t size);
};


#endif	// _DATAGRAM_SOCKET_H