1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5// IPC messages for the P2P Transport API.
6// Multiply-included message file, hence no include guard.
7
8#include "base/time/time.h"
9#include "content/common/content_export.h"
10#include "content/public/common/p2p_socket_type.h"
11#include "ipc/ipc_message_macros.h"
12#include "net/base/ip_endpoint.h"
13#include "net/base/net_util.h"
14
15#undef IPC_MESSAGE_EXPORT
16#define IPC_MESSAGE_EXPORT CONTENT_EXPORT
17#define IPC_MESSAGE_START P2PMsgStart
18
19IPC_ENUM_TRAITS(content::P2PSocketType)
20IPC_ENUM_TRAITS(net::DiffServCodePoint)
21
22IPC_STRUCT_TRAITS_BEGIN(net::NetworkInterface)
23  IPC_STRUCT_TRAITS_MEMBER(name)
24  IPC_STRUCT_TRAITS_MEMBER(address)
25IPC_STRUCT_TRAITS_END()
26
27// P2P Socket messages sent from the browser to the renderer.
28
29IPC_MESSAGE_CONTROL1(P2PMsg_NetworkListChanged,
30                     net::NetworkInterfaceList /* networks */)
31
32IPC_MESSAGE_CONTROL2(P2PMsg_GetHostAddressResult,
33                     int32 /* request_id */,
34                     net::IPAddressNumber /* address */)
35
36IPC_MESSAGE_CONTROL2(P2PMsg_OnSocketCreated,
37                     int /* socket_id */,
38                     net::IPEndPoint /* socket_address */)
39
40IPC_MESSAGE_CONTROL1(P2PMsg_OnSendComplete,
41                     int /* socket_id */)
42
43IPC_MESSAGE_CONTROL1(P2PMsg_OnError,
44                     int /* socket_id */)
45
46IPC_MESSAGE_CONTROL2(P2PMsg_OnIncomingTcpConnection,
47                     int /* socket_id */,
48                     net::IPEndPoint /* socket_address */)
49
50IPC_MESSAGE_CONTROL4(P2PMsg_OnDataReceived,
51                     int /* socket_id */,
52                     net::IPEndPoint /* socket_address */,
53                     std::vector<char> /* data */,
54                     base::TimeTicks /* timestamp */ )
55
56// P2P Socket messages sent from the renderer to the browser.
57
58// Start/stop sending P2PMsg_NetworkListChanged messages when network
59// configuration changes.
60IPC_MESSAGE_CONTROL0(P2PHostMsg_StartNetworkNotifications)
61IPC_MESSAGE_CONTROL0(P2PHostMsg_StopNetworkNotifications)
62
63IPC_MESSAGE_CONTROL2(P2PHostMsg_GetHostAddress,
64                    std::string /* host_name */,
65                    int32 /* request_id */)
66
67IPC_MESSAGE_CONTROL4(P2PHostMsg_CreateSocket,
68                     content::P2PSocketType /* type */,
69                     int /* socket_id */,
70                     net::IPEndPoint /* local_address */,
71                     net::IPEndPoint /* remote_address */)
72
73IPC_MESSAGE_CONTROL3(P2PHostMsg_AcceptIncomingTcpConnection,
74                    int /* listen_socket_id */,
75                    net::IPEndPoint /* remote_address */,
76                    int /* connected_socket_id */)
77
78// TODO(sergeyu): Use shared memory to pass the data.
79IPC_MESSAGE_CONTROL5(P2PHostMsg_Send,
80                     int /* socket_id */,
81                     net::IPEndPoint /* socket_address */,
82                     std::vector<char> /* data */,
83                     net::DiffServCodePoint /* dscp */,
84                     uint64 /* packet_id */)
85
86IPC_MESSAGE_CONTROL1(P2PHostMsg_DestroySocket,
87                     int /* socket_id */)
88