1a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// Copyright 2014 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)// This file defines some basic types used by the P2P-related IPC 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// messages. 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#ifndef CONTENT_COMMON_P2P_SOCKET_TYPE_H_ 9a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#define CONTENT_COMMON_P2P_SOCKET_TYPE_H_ 10a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 11a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include <string> 12a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 13a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "net/base/ip_endpoint.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content { 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)enum P2PSocketOption { 185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) P2P_SOCKET_OPT_RCVBUF, // Receive buffer size. 195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) P2P_SOCKET_OPT_SNDBUF, // Send buffer size. 205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) P2P_SOCKET_OPT_DSCP, // DSCP code. 215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) P2P_SOCKET_OPT_MAX 225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}; 235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Type of P2P Socket. 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)enum P2PSocketType { 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) P2P_SOCKET_UDP, 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) P2P_SOCKET_TCP_SERVER, 28b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) P2P_SOCKET_STUN_TCP_SERVER, 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) P2P_SOCKET_TCP_CLIENT, 30b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) P2P_SOCKET_STUN_TCP_CLIENT, 31eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch P2P_SOCKET_SSLTCP_CLIENT, 32eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch P2P_SOCKET_STUN_SSLTCP_CLIENT, 33c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch P2P_SOCKET_TLS_CLIENT, 34c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch P2P_SOCKET_STUN_TLS_CLIENT, 355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) P2P_SOCKET_TYPE_LAST = P2P_SOCKET_STUN_TLS_CLIENT 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 38a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// Struct which carries both resolved IP address and host string literal. 39a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// Port number will be part of |ip_address|. 40a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)struct P2PHostAndIPEndPoint { 41a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) P2PHostAndIPEndPoint() {} 42a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) P2PHostAndIPEndPoint(const std::string& hostname, 43a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) const net::IPEndPoint& ip_address) 44a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) : hostname(hostname), ip_address(ip_address) { 45a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) } 46a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 47a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) std::string hostname; 48a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) net::IPEndPoint ip_address; 49a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}; 50a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace content 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 53a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#endif // CONTENT_COMMON_P2P_SOCKET_TYPE_H_ 54