1 // Copyright 2018 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 #include "services/service_manager/public/cpp/service_filter_mojom_traits.h"
6 #include "mojo/public/cpp/base/token_mojom_traits.h"
7 
8 namespace mojo {
9 
10 bool StructTraits<service_manager::mojom::ServiceFilterDataView,
11                   service_manager::ServiceFilter>::
Read(service_manager::mojom::ServiceFilterDataView data,service_manager::ServiceFilter * out)12     Read(service_manager::mojom::ServiceFilterDataView data,
13          service_manager::ServiceFilter* out) {
14   std::string service_name;
15   if (!data.ReadServiceName(&service_name))
16     return false;
17   base::Optional<base::Token> instance_group;
18   if (!data.ReadInstanceGroup(&instance_group))
19     return false;
20   base::Optional<base::Token> instance_id;
21   if (!data.ReadInstanceId(&instance_id))
22     return false;
23   base::Optional<base::Token> globally_unique_id;
24   if (!data.ReadGloballyUniqueId(&globally_unique_id))
25     return false;
26   out->set_service_name(service_name);
27   out->set_instance_group(instance_group);
28   out->set_instance_id(instance_id);
29   out->set_globally_unique_id(globally_unique_id);
30   return true;
31 }
32 
33 }  // namespace mojo
34