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