• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2022 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #include "host/commands/cvd/selector/instance_record.h"
18 
19 #include "host/commands/cvd/selector/instance_database_utils.h"
20 #include "host/commands/cvd/selector/instance_group_record.h"
21 
22 namespace cuttlefish {
23 namespace selector {
24 
LocalInstance(const LocalInstanceGroup & parent_group,const unsigned instance_id,const std::string & instance_name)25 LocalInstance::LocalInstance(const LocalInstanceGroup& parent_group,
26                              const unsigned instance_id,
27                              const std::string& instance_name)
28     : parent_group_(parent_group),
29       instance_id_(instance_id),
30       internal_name_(std::to_string(instance_id_)),
31       per_instance_name_(instance_name) {}
32 
InstanceId() const33 unsigned LocalInstance::InstanceId() const { return instance_id_; }
34 
InternalDeviceName() const35 std::string LocalInstance::InternalDeviceName() const {
36   return LocalDeviceNameRule(parent_group_.InternalGroupName(), internal_name_);
37 }
38 
InternalName() const39 const std::string& LocalInstance::InternalName() const {
40   return internal_name_;
41 }
42 
DeviceName() const43 std::string LocalInstance::DeviceName() const {
44   return LocalDeviceNameRule(parent_group_.GroupName(), per_instance_name_);
45 }
46 
PerInstanceName() const47 const std::string& LocalInstance::PerInstanceName() const {
48   return per_instance_name_;
49 }
50 
ParentGroup() const51 const LocalInstanceGroup& LocalInstance::ParentGroup() const {
52   return parent_group_;
53 }
54 
GetCopy() const55 LocalInstance::Copy LocalInstance::GetCopy() const {
56   Copy copy(*this);
57   return copy;
58 }
59 
Copy(const LocalInstance & src)60 LocalInstance::Copy::Copy(const LocalInstance& src)
61     : internal_name_{src.InternalName()},
62       internal_device_name_{src.InternalDeviceName()},
63       instance_id_{src.InstanceId()},
64       per_instance_name_{src.PerInstanceName()},
65       device_name_{src.DeviceName()},
66       mock_group_{MockParentParam{
67           .home_dir = src.ParentGroup().HomeDir(),
68           .host_artifacts_path = src.ParentGroup().HostArtifactsPath(),
69           .internal_group_name = src.ParentGroup().InternalGroupName(),
70           .group_name = src.ParentGroup().GroupName(),
71           .build_id = src.ParentGroup().BuildId()}} {}
72 
MockParent(const MockParentParam & params)73 LocalInstance::Copy::MockParent::MockParent(const MockParentParam& params)
74     : home_dir_{params.home_dir},
75       host_artifacts_path_{params.host_artifacts_path},
76       internal_group_name_{params.internal_group_name},
77       group_name_{params.group_name},
78       build_id_{params.build_id} {}
79 
80 }  // namespace selector
81 }  // namespace cuttlefish
82