Pigweed
Loading...
Searching...
No Matches
lease.h
1
// Copyright 2025 The Pigweed Authors
2
//
3
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
4
// use this file except in compliance with the License. You may obtain a copy of
5
// the License at
6
//
7
// https://www.apache.org/licenses/LICENSE-2.0
8
//
9
// Unless required by applicable law or agreed to in writing, software
10
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12
// License for the specific language governing permissions and limitations under
13
// the License.
14
15
#pragma once
16
17
#include "pw_bluetooth_sapphire/config.h"
18
#include "pw_function/function.h"
19
#include "pw_result/result.h"
20
24
#define PW_SAPPHIRE_ACQUIRE_LEASE(lease_provider, name) \
25
lease_provider.Acquire(PW_SAPPHIRE_LEASE_TOKEN_EXPR(name))
26
27
namespace
pw::bluetooth_sapphire {
28
31
class
Lease
final {
32
public
:
33
Lease
() =
default
;
34
Lease
(
pw::Function
<
void
()> unlock_fn) : unlock_fn_(std::move(unlock_fn)) {}
35
Lease
(
Lease
&&) =
default
;
36
Lease
& operator=(
Lease
&&) =
default
;
37
Lease
(
const
Lease
&) =
delete
;
38
Lease
& operator=(
const
Lease
&) =
delete
;
39
40
~Lease
() {
41
if
(unlock_fn_) {
42
unlock_fn_();
43
}
44
}
45
46
private
:
47
pw::Function
<void()> unlock_fn_ =
nullptr
;
48
};
49
52
class
LeaseProvider
{
53
public
:
54
virtual
~LeaseProvider
() =
default
;
55
71
virtual
Result<Lease>
Acquire
(PW_SAPPHIRE_LEASE_TOKEN_TYPE name) = 0;
72
};
73
74
}
// namespace pw::bluetooth_sapphire
pw::bluetooth_sapphire::Lease
Definition:
lease.h:31
pw::bluetooth_sapphire::LeaseProvider
Definition:
lease.h:52
pw::bluetooth_sapphire::LeaseProvider::Acquire
virtual Result< Lease > Acquire(PW_SAPPHIRE_LEASE_TOKEN_TYPE name)=0
pw::Function
fit::function_impl< function_internal::config::kInlineCallableSize, !function_internal::config::kEnableDynamicAllocation, FunctionType, PW_FUNCTION_DEFAULT_ALLOCATOR_TYPE > Function
Definition:
function.h:74
pw_bluetooth_sapphire
public
pw_bluetooth_sapphire
lease.h
Generated by
1.9.6