1// Copyright 2013 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// Defines local discovery messages between the browser and utility process.
6
7// Multiple-included file, no traditional include guard.
8#include <vector>
9
10#include "chrome/common/local_discovery/service_discovery_client.h"
11#include "ipc/ipc_message_macros.h"
12
13#ifndef CHROME_COMMON_LOCAL_DISCOVERY_LOCAL_DISCOVERY_MESSAGES_H_
14#define CHROME_COMMON_LOCAL_DISCOVERY_LOCAL_DISCOVERY_MESSAGES_H_
15
16#if defined(OS_POSIX)
17#include "base/file_descriptor_posix.h"
18#endif
19
20#if defined(OS_POSIX)
21struct LocalDiscoveryMsg_SocketInfo {
22  LocalDiscoveryMsg_SocketInfo()
23      : address_family(net::ADDRESS_FAMILY_UNSPECIFIED),
24        interface_index(0) {
25  }
26
27  base::FileDescriptor descriptor;
28  net::AddressFamily address_family;
29  uint32 interface_index;
30};
31#endif  // OS_POSIX
32
33#endif  // CHROME_COMMON_LOCAL_DISCOVERY_LOCAL_DISCOVERY_MESSAGES_H_
34
35#define IPC_MESSAGE_START LocalDiscoveryMsgStart
36
37IPC_ENUM_TRAITS_MAX_VALUE(local_discovery::ServiceWatcher::UpdateType,
38                          local_discovery::ServiceWatcher::UPDATE_TYPE_LAST)
39
40IPC_ENUM_TRAITS_MAX_VALUE(
41    local_discovery::ServiceResolver::RequestStatus,
42    local_discovery::ServiceResolver::REQUEST_STATUS_LAST)
43
44IPC_ENUM_TRAITS_MAX_VALUE(net::AddressFamily, net::ADDRESS_FAMILY_LAST)
45
46IPC_STRUCT_TRAITS_BEGIN(local_discovery::ServiceDescription)
47  IPC_STRUCT_TRAITS_MEMBER(service_name)
48  IPC_STRUCT_TRAITS_MEMBER(address)
49  IPC_STRUCT_TRAITS_MEMBER(metadata)
50  IPC_STRUCT_TRAITS_MEMBER(ip_address)
51  IPC_STRUCT_TRAITS_MEMBER(last_seen)
52IPC_STRUCT_TRAITS_END()
53
54#if defined(OS_POSIX)
55IPC_STRUCT_TRAITS_BEGIN(LocalDiscoveryMsg_SocketInfo)
56  IPC_STRUCT_TRAITS_MEMBER(descriptor)
57  IPC_STRUCT_TRAITS_MEMBER(address_family)
58  IPC_STRUCT_TRAITS_MEMBER(interface_index)
59IPC_STRUCT_TRAITS_END()
60#endif  // OS_POSIX
61//------------------------------------------------------------------------------
62// Utility process messages:
63// These are messages from the browser to the utility process.
64
65#if defined(OS_POSIX)
66IPC_MESSAGE_CONTROL1(LocalDiscoveryMsg_SetSockets,
67                     std::vector<LocalDiscoveryMsg_SocketInfo> /* sockets */)
68#endif  // OS_POSIX
69
70// Creates watcher and starts listening in utility process.
71IPC_MESSAGE_CONTROL2(LocalDiscoveryMsg_StartWatcher,
72                     uint64 /* id */,
73                     std::string /* service_type */)
74
75// Discovers new services.
76IPC_MESSAGE_CONTROL2(LocalDiscoveryMsg_DiscoverServices,
77                     uint64 /* id */,
78                     bool /* force_update */)
79
80// Discovers new services.
81IPC_MESSAGE_CONTROL2(LocalDiscoveryMsg_SetActivelyRefreshServices,
82                     uint64 /* id */,
83                     bool /* actively_refresh_services */)
84
85// Destroys watcher in utility process.
86IPC_MESSAGE_CONTROL1(LocalDiscoveryMsg_DestroyWatcher,
87                     uint64 /* id */)
88
89// Creates service resolver and starts resolving service in utility process.
90IPC_MESSAGE_CONTROL2(LocalDiscoveryMsg_ResolveService,
91                     uint64 /* id */,
92                     std::string /* service_name */)
93
94// Destroys service resolver in utility process.
95IPC_MESSAGE_CONTROL1(LocalDiscoveryMsg_DestroyResolver,
96                     uint64 /* id */)
97
98// Creates a local domain resolver and starts resolving in utility process.
99IPC_MESSAGE_CONTROL3(LocalDiscoveryMsg_ResolveLocalDomain,
100                     uint64 /* id */,
101                     std::string /* domain */,
102                     net::AddressFamily /* address_family */)
103
104// Destroys local domain resolver in utility process.
105IPC_MESSAGE_CONTROL1(LocalDiscoveryMsg_DestroyLocalDomainResolver,
106                     uint64 /* id */)
107
108// Stops local discovery in utility process. http://crbug.com/268466.
109IPC_MESSAGE_CONTROL0(LocalDiscoveryMsg_ShutdownLocalDiscovery)
110
111
112//------------------------------------------------------------------------------
113// Utility process host messages:
114// These are messages from the utility process to the browser.
115
116// Notifies browser process if process failed.
117IPC_MESSAGE_CONTROL0(LocalDiscoveryHostMsg_Error)
118
119// Notifies browser process about new services.
120IPC_MESSAGE_CONTROL3(LocalDiscoveryHostMsg_WatcherCallback,
121                     uint64 /* id */,
122                     local_discovery::ServiceWatcher::UpdateType /* update */,
123                     std::string /* service_name */)
124
125// Notifies browser process about service resolution results.
126IPC_MESSAGE_CONTROL3(
127    LocalDiscoveryHostMsg_ResolverCallback,
128    uint64 /* id */,
129    local_discovery::ServiceResolver::RequestStatus /* status */,
130    local_discovery::ServiceDescription /* description */)
131
132// Notifies browser process about local domain resolution results.
133IPC_MESSAGE_CONTROL4(
134    LocalDiscoveryHostMsg_LocalDomainResolverCallback,
135    uint64 /* id */,
136    bool /* success */,
137    net::IPAddressNumber /* ip_address_ipv4 */,
138    net::IPAddressNumber /* ip_address_ipv6 */)
139