pdk-lock-lib-0.0.0-alpha.2 has been yanked.
PDK Lock Library

pdk-lock-lib provides simple locking primitives for Flex Gateway custom policies built with the PDK.
You may be looking for:
lock-lib in action
[dependencies]
pdk = { version = "1.6" }
use std::time::Duration;
use anyhow::Result;
use pdk::hl::*;
use pdk::lock::{LockBuilder, TryLock};
const LOCK_EXPIRATION: Duration = Duration::from_secs(10);
async fn request_filter(request_state: RequestState, try_lock: &TryLock) {
let headers_state = request_state.into_headers_state().await;
if let Some(lock) = try_lock.try_lock() {
let _body_state = headers_state.into_body_state().await;
if lock.refresh_lock() {
}
}
}
async fn response_filter(response_state: ResponseState, try_lock: &TryLock) {
let headers_state = response_state.into_headers_state().await;
if let Some(lock) = try_lock.try_lock() {
let _body_state = headers_state.into_body_state().await;
if lock.refresh_lock() {
}
}
}
#[entrypoint]
async fn configure(launcher: Launcher, lock_builder: LockBuilder) -> Result<()> {
let try_lock: TryLock = lock_builder
.new("example-id".to_string())
.expiration(LOCK_EXPIRATION) .build();
if let Some(lock) = try_lock.try_lock() {
if lock.refresh_lock() {
}
}
let filter = on_request(|rs| request_filter(rs, &try_lock))
.on_response(|rs| response_filter(rs, &try_lock));
launcher.launch(filter).await?;
Ok(())
}
License