aws_smithy_checksums/body/
cache.rs

1/*
2 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3 * SPDX-License-Identifier: Apache-2.0
4 */
5
6//! Checksum caching functionality.
7
8use http::HeaderMap;
9use std::sync::{Arc, Mutex};
10
11/// A cache for storing previously calculated checksums.
12#[derive(Debug, Clone)]
13pub struct ChecksumCache {
14    inner: Arc<Mutex<Option<HeaderMap>>>,
15}
16
17impl ChecksumCache {
18    /// Create a new empty checksum cache.
19    pub fn new() -> Self {
20        Self {
21            inner: Arc::new(Mutex::new(None)),
22        }
23    }
24
25    /// Get a cached checksum if previously calculated
26    pub fn get(&self) -> Option<HeaderMap> {
27        self.inner.lock().unwrap().clone()
28    }
29
30    /// Store a checksum in the cache.
31    pub fn set(&self, headers: HeaderMap) {
32        let mut inner = self.inner.lock().unwrap();
33        *inner = Some(headers);
34    }
35}
36
37impl Default for ChecksumCache {
38    fn default() -> Self {
39        Self::new()
40    }
41}