udp_socket.h revision 5821806d5e7f356e8fa4b058a389a808ea183019
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef NET_UDP_UDP_SOCKET_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define NET_UDP_UDP_SOCKET_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "build/build_config.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN)
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/udp/udp_socket_win.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif defined(OS_POSIX)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/udp/udp_socket_libevent.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace net {
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// UDPSocket
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Accessor API for a UDP socket in either client or server form.
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Client form:
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// In this case, we're connecting to a specific server, so the client will
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// usually use:
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//       Connect(address)    // Connect to a UDP server
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//       Read/Write          // Reads/Writes all go to a single destination
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Server form:
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// In this case, we want to read/write to many clients which are connecting
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// to this server.  First the server 'binds' to an addres, then we read from
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// clients and write responses to them.
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Example:
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//       Bind(address/port)  // Binds to port for reading from clients
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//       RecvFrom/SendTo     // Each read can come from a different client
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//                           // Writes need to be directed to a specific
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//                           // address.
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN)
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef UDPSocketWin UDPSocket;
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif defined(OS_POSIX)
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef UDPSocketLibevent UDPSocket;
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace net
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // NET_UDP_UDP_SOCKET_H_
45