1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
use std::{cell::Cell, future::Future, sync::Arc};

use crate::{addr::Addr, object::ObjectMeta, trace_id::TraceId};

tokio::task_local! {
    static META: Arc<ObjectMeta>;
    static TRACE_ID: Cell<TraceId>;
}

#[deprecated(note = "use `elfo::scope::trace_id()` instead")]
pub fn trace_id() -> TraceId {
    crate::scope::trace_id()
}

#[deprecated(note = "use `elfo::scope::try_trace_id()` instead")]
pub fn try_trace_id() -> Option<TraceId> {
    crate::scope::try_trace_id()
}

#[deprecated(note = "use `elfo::scope::set_trace_id()` instead")]
pub fn set_trace_id(trace_id: TraceId) {
    crate::scope::set_trace_id(trace_id);
}

#[deprecated(note = "use `elfo::scope::meta()` instead")]
pub fn meta() -> Arc<ObjectMeta> {
    crate::scope::meta()
}

#[deprecated(note = "use `elfo::scope::try_meta()` instead")]
pub fn try_meta() -> Option<Arc<ObjectMeta>> {
    crate::scope::try_meta()
}

#[deprecated(note = "use `elfo::scope` instead")]
pub async fn scope<F: Future>(meta: Arc<ObjectMeta>, trace_id: TraceId, f: F) -> F::Output {
    #[allow(deprecated)]
    let scope = make_stupid_scope(meta);
    scope.set_trace_id(trace_id);
    scope.within(f).await
}

#[deprecated(note = "use `elfo::scope` instead")]
pub fn sync_scope<R>(meta: Arc<ObjectMeta>, trace_id: TraceId, f: impl FnOnce() -> R) -> R {
    #[allow(deprecated)]
    let scope = make_stupid_scope(meta);
    scope.set_trace_id(trace_id);
    scope.sync_within(f)
}

fn make_stupid_scope(meta: Arc<ObjectMeta>) -> crate::scope::Scope {
    crate::scope::Scope::new(
        Addr::NULL,
        Addr::NULL,
        meta,
        Default::default(),
        Default::default(),
    )
}