zino_http/request/
context.rs1use std::time::Instant;
2use zino_core::Uuid;
3
4#[cfg(feature = "i18n")]
5use unic_langid::LanguageIdentifier;
6
7#[derive(Debug, Clone)]
9pub struct Context {
10 start_time: Instant,
12 instance: String,
14 request_id: Uuid,
16 trace_id: Uuid,
18 session_id: Option<String>,
20 #[cfg(feature = "i18n")]
22 locale: Option<LanguageIdentifier>,
23}
24
25impl Context {
26 pub fn new(request_id: Uuid) -> Self {
28 Self {
29 start_time: Instant::now(),
30 instance: String::new(),
31 request_id,
32 trace_id: Uuid::nil(),
33 session_id: None,
34 #[cfg(feature = "i18n")]
35 locale: None,
36 }
37 }
38
39 #[inline]
41 pub fn set_instance(&mut self, instance: String) {
42 self.instance = instance;
43 }
44
45 #[inline]
47 pub fn set_trace_id(&mut self, trace_id: Uuid) {
48 self.trace_id = trace_id;
49 }
50
51 #[inline]
53 pub fn set_session_id(&mut self, session_id: Option<String>) {
54 self.session_id = session_id;
55 }
56
57 #[cfg(feature = "i18n")]
59 #[inline]
60 pub fn set_locale(&mut self, locale: LanguageIdentifier) {
61 self.locale = Some(locale);
62 }
63
64 #[inline]
66 pub fn start_time(&self) -> Instant {
67 self.start_time
68 }
69
70 #[inline]
72 pub fn instance(&self) -> &str {
73 &self.instance
74 }
75
76 #[inline]
78 pub fn request_id(&self) -> Uuid {
79 self.request_id
80 }
81
82 #[inline]
84 pub fn trace_id(&self) -> Uuid {
85 self.trace_id
86 }
87
88 #[inline]
90 pub fn session_id(&self) -> Option<&str> {
91 self.session_id.as_deref()
92 }
93
94 #[cfg(feature = "i18n")]
96 pub fn locale(&self) -> Option<&LanguageIdentifier> {
97 self.locale.as_ref()
98 }
99}