1ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved. 2ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 3ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// found in the LICENSE file. 4ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 5ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// Defines local discovery messages between the browser and utility process. 6ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 7a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// Multiple-included file, no traditional include guard. 8a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include <vector> 9a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 10ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "chrome/common/local_discovery/service_discovery_client.h" 11ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "ipc/ipc_message_macros.h" 12ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 13a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#ifndef CHROME_COMMON_LOCAL_DISCOVERY_LOCAL_DISCOVERY_MESSAGES_H_ 14a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#define CHROME_COMMON_LOCAL_DISCOVERY_LOCAL_DISCOVERY_MESSAGES_H_ 15a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 16a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#if defined(OS_POSIX) 17a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "base/file_descriptor_posix.h" 18a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#endif 19a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 20a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#if defined(OS_POSIX) 21a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)struct LocalDiscoveryMsg_SocketInfo { 22a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) LocalDiscoveryMsg_SocketInfo() 23a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) : address_family(net::ADDRESS_FAMILY_UNSPECIFIED), 24a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) interface_index(0) { 25a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) } 26a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 27a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::FileDescriptor descriptor; 28a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) net::AddressFamily address_family; 29a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) uint32 interface_index; 30a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}; 31a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#endif // OS_POSIX 32a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 33a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#endif // CHROME_COMMON_LOCAL_DISCOVERY_LOCAL_DISCOVERY_MESSAGES_H_ 34a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 35ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#define IPC_MESSAGE_START LocalDiscoveryMsgStart 36ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_ENUM_TRAITS_MAX_VALUE(local_discovery::ServiceWatcher::UpdateType, 385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) local_discovery::ServiceWatcher::UPDATE_TYPE_LAST) 395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_ENUM_TRAITS_MAX_VALUE( 415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) local_discovery::ServiceResolver::RequestStatus, 425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) local_discovery::ServiceResolver::REQUEST_STATUS_LAST) 435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_ENUM_TRAITS_MAX_VALUE(net::AddressFamily, net::ADDRESS_FAMILY_LAST) 455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 46ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben MurdochIPC_STRUCT_TRAITS_BEGIN(local_discovery::ServiceDescription) 47ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch IPC_STRUCT_TRAITS_MEMBER(service_name) 48ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch IPC_STRUCT_TRAITS_MEMBER(address) 49ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch IPC_STRUCT_TRAITS_MEMBER(metadata) 50ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch IPC_STRUCT_TRAITS_MEMBER(ip_address) 51ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch IPC_STRUCT_TRAITS_MEMBER(last_seen) 52ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben MurdochIPC_STRUCT_TRAITS_END() 53ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 54a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#if defined(OS_POSIX) 55a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)IPC_STRUCT_TRAITS_BEGIN(LocalDiscoveryMsg_SocketInfo) 56a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(descriptor) 57a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(address_family) 58a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) IPC_STRUCT_TRAITS_MEMBER(interface_index) 59a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)IPC_STRUCT_TRAITS_END() 60a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#endif // OS_POSIX 61ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch//------------------------------------------------------------------------------ 62ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// Utility process messages: 63ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// These are messages from the browser to the utility process. 64ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 6558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#if defined(OS_POSIX) 66a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)IPC_MESSAGE_CONTROL1(LocalDiscoveryMsg_SetSockets, 67a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) std::vector<LocalDiscoveryMsg_SocketInfo> /* sockets */) 6858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#endif // OS_POSIX 6958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 70ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// Creates watcher and starts listening in utility process. 71ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben MurdochIPC_MESSAGE_CONTROL2(LocalDiscoveryMsg_StartWatcher, 72ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch uint64 /* id */, 73ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch std::string /* service_type */) 74ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 75ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// Discovers new services. 76ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben MurdochIPC_MESSAGE_CONTROL2(LocalDiscoveryMsg_DiscoverServices, 77ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch uint64 /* id */, 78ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch bool /* force_update */) 79ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Discovers new services. 815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)IPC_MESSAGE_CONTROL2(LocalDiscoveryMsg_SetActivelyRefreshServices, 825d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) uint64 /* id */, 835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) bool /* actively_refresh_services */) 845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 85ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// Destroys watcher in utility process. 86ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben MurdochIPC_MESSAGE_CONTROL1(LocalDiscoveryMsg_DestroyWatcher, 87ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch uint64 /* id */) 88ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 89ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// Creates service resolver and starts resolving service in utility process. 90ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben MurdochIPC_MESSAGE_CONTROL2(LocalDiscoveryMsg_ResolveService, 91ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch uint64 /* id */, 92ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch std::string /* service_name */) 93ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 94ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// Destroys service resolver in utility process. 95ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben MurdochIPC_MESSAGE_CONTROL1(LocalDiscoveryMsg_DestroyResolver, 96ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch uint64 /* id */) 97ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 98bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch// Creates a local domain resolver and starts resolving in utility process. 99bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben MurdochIPC_MESSAGE_CONTROL3(LocalDiscoveryMsg_ResolveLocalDomain, 100bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch uint64 /* id */, 101bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch std::string /* domain */, 102bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch net::AddressFamily /* address_family */) 103bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch 104bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch// Destroys local domain resolver in utility process. 105bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben MurdochIPC_MESSAGE_CONTROL1(LocalDiscoveryMsg_DestroyLocalDomainResolver, 106bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch uint64 /* id */) 107bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch 1083551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// Stops local discovery in utility process. http://crbug.com/268466. 1093551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)IPC_MESSAGE_CONTROL0(LocalDiscoveryMsg_ShutdownLocalDiscovery) 1103551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 1113551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 112ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch//------------------------------------------------------------------------------ 113ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// Utility process host messages: 114ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// These are messages from the utility process to the browser. 115ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 11668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)// Notifies browser process if process failed. 11768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)IPC_MESSAGE_CONTROL0(LocalDiscoveryHostMsg_Error) 11868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 119ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// Notifies browser process about new services. 120ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben MurdochIPC_MESSAGE_CONTROL3(LocalDiscoveryHostMsg_WatcherCallback, 121ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch uint64 /* id */, 122ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch local_discovery::ServiceWatcher::UpdateType /* update */, 123ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch std::string /* service_name */) 124ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 125ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// Notifies browser process about service resolution results. 126ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben MurdochIPC_MESSAGE_CONTROL3( 127ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch LocalDiscoveryHostMsg_ResolverCallback, 128ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch uint64 /* id */, 129ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch local_discovery::ServiceResolver::RequestStatus /* status */, 130ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch local_discovery::ServiceDescription /* description */) 131bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch 132bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch// Notifies browser process about local domain resolution results. 133424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)IPC_MESSAGE_CONTROL4( 134bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch LocalDiscoveryHostMsg_LocalDomainResolverCallback, 135bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch uint64 /* id */, 136bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch bool /* success */, 137424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) net::IPAddressNumber /* ip_address_ipv4 */, 138424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) net::IPAddressNumber /* ip_address_ipv6 */) 139