summaryrefslogtreecommitdiff
path: root/vendor/hyper/src/common/watch.rs
diff options
context:
space:
mode:
authormo khan <mo@mokhan.ca>2025-07-15 16:37:08 -0600
committermo khan <mo@mokhan.ca>2025-07-17 16:30:22 -0600
commit45df4d0d9b577fecee798d672695fe24ff57fb1b (patch)
tree1b99bf645035b58e0d6db08c7a83521f41f7a75b /vendor/hyper/src/common/watch.rs
parentf94f79608393d4ab127db63cc41668445ef6b243 (diff)
feat: migrate from Cedar to SpiceDB authorization system
This is a major architectural change that replaces the Cedar policy-based authorization system with SpiceDB's relation-based authorization. Key changes: - Migrate from Rust to Go implementation - Replace Cedar policies with SpiceDB schema and relationships - Switch from envoy `ext_authz` with Cedar to SpiceDB permission checks - Update build system and dependencies for Go ecosystem - Maintain Envoy integration for external authorization This change enables more flexible permission modeling through SpiceDB's Google Zanzibar inspired relation-based system, supporting complex hierarchical permissions that were difficult to express in Cedar. Breaking change: Existing Cedar policies and Rust-based configuration will no longer work and need to be migrated to SpiceDB schema.
Diffstat (limited to 'vendor/hyper/src/common/watch.rs')
-rw-r--r--vendor/hyper/src/common/watch.rs73
1 files changed, 0 insertions, 73 deletions
diff --git a/vendor/hyper/src/common/watch.rs b/vendor/hyper/src/common/watch.rs
deleted file mode 100644
index ba17d551..00000000
--- a/vendor/hyper/src/common/watch.rs
+++ /dev/null
@@ -1,73 +0,0 @@
-//! An SPSC broadcast channel.
-//!
-//! - The value can only be a `usize`.
-//! - The consumer is only notified if the value is different.
-//! - The value `0` is reserved for closed.
-
-use futures_util::task::AtomicWaker;
-use std::sync::{
- atomic::{AtomicUsize, Ordering},
- Arc,
-};
-use std::task;
-
-type Value = usize;
-
-pub(crate) const CLOSED: usize = 0;
-
-pub(crate) fn channel(initial: Value) -> (Sender, Receiver) {
- debug_assert!(
- initial != CLOSED,
- "watch::channel initial state of 0 is reserved"
- );
-
- let shared = Arc::new(Shared {
- value: AtomicUsize::new(initial),
- waker: AtomicWaker::new(),
- });
-
- (
- Sender {
- shared: shared.clone(),
- },
- Receiver { shared },
- )
-}
-
-pub(crate) struct Sender {
- shared: Arc<Shared>,
-}
-
-pub(crate) struct Receiver {
- shared: Arc<Shared>,
-}
-
-struct Shared {
- value: AtomicUsize,
- waker: AtomicWaker,
-}
-
-impl Sender {
- pub(crate) fn send(&mut self, value: Value) {
- if self.shared.value.swap(value, Ordering::SeqCst) != value {
- self.shared.waker.wake();
- }
- }
-}
-
-impl Drop for Sender {
- fn drop(&mut self) {
- self.send(CLOSED);
- }
-}
-
-impl Receiver {
- pub(crate) fn load(&mut self, cx: &mut task::Context<'_>) -> Value {
- self.shared.waker.register(cx.waker());
- self.shared.value.load(Ordering::SeqCst)
- }
-
- pub(crate) fn peek(&self) -> Value {
- self.shared.value.load(Ordering::Relaxed)
- }
-}