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