1/*
2 * Copyright 2011, Haiku, Inc. All Rights Reserved.
3 * Distributed under the terms of the MIT License.
4 */
5#ifndef _DATAGRAM_SOCKET_H
6#define _DATAGRAM_SOCKET_H
7
8
9#include <AbstractSocket.h>
10
11
12class BDatagramSocket : public BAbstractSocket {
13public:
14								BDatagramSocket();
15								BDatagramSocket(const BNetworkAddress& peer,
16									bigtime_t timeout = -1);
17								BDatagramSocket(const BDatagramSocket& other);
18	virtual						~BDatagramSocket();
19
20	virtual	status_t			Bind(const BNetworkAddress& peer);
21	virtual	status_t			Connect(const BNetworkAddress& peer,
22									bigtime_t timeout = B_INFINITE_TIMEOUT);
23
24			status_t			SetBroadcast(bool broadcast);
25			void				SetPeer(const BNetworkAddress& peer);
26
27	virtual	size_t				MaxTransmissionSize() const;
28
29	virtual	size_t				SendTo(const BNetworkAddress& address,
30									const void* buffer, size_t size);
31	virtual	size_t				ReceiveFrom(void* buffer, size_t bufferSize,
32									BNetworkAddress& from);
33
34	// BDataIO implementation
35
36	virtual ssize_t				Read(void* buffer, size_t size);
37	virtual ssize_t				Write(const void* buffer, size_t size);
38};
39
40
41#endif	// _DATAGRAM_SOCKET_H
42