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) 21 struct 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 37 IPC_ENUM_TRAITS_MAX_VALUE(local_discovery::ServiceWatcher::UpdateType, 38 local_discovery::ServiceWatcher::UPDATE_TYPE_LAST) 39 40 IPC_ENUM_TRAITS_MAX_VALUE( 41 local_discovery::ServiceResolver::RequestStatus, 42 local_discovery::ServiceResolver::REQUEST_STATUS_LAST) 43 44 IPC_ENUM_TRAITS_MAX_VALUE(net::AddressFamily, net::ADDRESS_FAMILY_LAST) 45 46 IPC_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) 52 IPC_STRUCT_TRAITS_END() 53 54 #if defined(OS_POSIX) 55 IPC_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) 59 IPC_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) 66 IPC_MESSAGE_CONTROL1(LocalDiscoveryMsg_SetSockets, 67 std::vector<LocalDiscoveryMsg_SocketInfo> /* sockets */) 68 #endif // OS_POSIX 69 70 // Creates watcher and starts listening in utility process. 71 IPC_MESSAGE_CONTROL2(LocalDiscoveryMsg_StartWatcher, 72 uint64 /* id */, 73 std::string /* service_type */) 74 75 // Discovers new services. 76 IPC_MESSAGE_CONTROL2(LocalDiscoveryMsg_DiscoverServices, 77 uint64 /* id */, 78 bool /* force_update */) 79 80 // Discovers new services. 81 IPC_MESSAGE_CONTROL2(LocalDiscoveryMsg_SetActivelyRefreshServices, 82 uint64 /* id */, 83 bool /* actively_refresh_services */) 84 85 // Destroys watcher in utility process. 86 IPC_MESSAGE_CONTROL1(LocalDiscoveryMsg_DestroyWatcher, 87 uint64 /* id */) 88 89 // Creates service resolver and starts resolving service in utility process. 90 IPC_MESSAGE_CONTROL2(LocalDiscoveryMsg_ResolveService, 91 uint64 /* id */, 92 std::string /* service_name */) 93 94 // Destroys service resolver in utility process. 95 IPC_MESSAGE_CONTROL1(LocalDiscoveryMsg_DestroyResolver, 96 uint64 /* id */) 97 98 // Creates a local domain resolver and starts resolving in utility process. 99 IPC_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. 105 IPC_MESSAGE_CONTROL1(LocalDiscoveryMsg_DestroyLocalDomainResolver, 106 uint64 /* id */) 107 108 // Stops local discovery in utility process. http://crbug.com/268466. 109 IPC_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. 117 IPC_MESSAGE_CONTROL0(LocalDiscoveryHostMsg_Error) 118 119 // Notifies browser process about new services. 120 IPC_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. 126 IPC_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. 133 IPC_MESSAGE_CONTROL4( 134 LocalDiscoveryHostMsg_LocalDomainResolverCallback, 135 uint64 /* id */, 136 bool /* success */, 137 net::IPAddressNumber /* ip_address_ipv4 */, 138 net::IPAddressNumber /* ip_address_ipv6 */) 139