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