struct FastTrackRun<'a> {
ctx: &'a PhaseContext<'a>,
realisation: &'a RealisationToList,
enabled: bool,
max_verification_age: Duration,
templates: TemplateCache,
accounts: HashMap<String, FastTrackCandidate>,
}Expand description
The fast track over one realisation’s roster: the config it reads and the template lookup it caches, so neither is repeated per person.
Fields§
§ctx: &'a PhaseContext<'a>§realisation: &'a RealisationToList§enabled: bool§max_verification_age: Duration§templates: TemplateCache§accounts: HashMap<String, FastTrackCandidate>The account behind each person’s registry address, resolved for the whole roster at once so only the few people a link is actually possible for cost a transaction.
Implementations§
Source§impl<'a> FastTrackRun<'a>
impl<'a> FastTrackRun<'a>
fn new(ctx: &'a PhaseContext<'a>, realisation: &'a RealisationToList) -> Self
async fn resolve_accounts<'p>( &mut self, conn: &mut PgConnection, people: impl Iterator<Item = &'p ListedPerson>, ) -> Result<()>
fn decide( &self, candidate: Option<&FastTrackCandidate>, person: &ListedPerson, ) -> FastTrackDecision
Sourceasync fn try_link(
&mut self,
conn: &mut PgConnection,
person: &ListedPerson,
outcome: &mut RealisationListingOutcome,
) -> Result<bool>
async fn try_link( &mut self, conn: &mut PgConnection, person: &ListedPerson, outcome: &mut RealisationListingOutcome, ) -> Result<bool>
Whether the person was linked here, in which case no linking mail is owed. false for every
other outcome, including the flag being off, and the caller carries on to the mail.
Sourceasync fn notify(
&mut self,
conn: &mut PgConnection,
person: &ListedPerson,
candidate: &FastTrackCandidate,
) -> Result<()>
async fn notify( &mut self, conn: &mut PgConnection, person: &ListedPerson, candidate: &FastTrackCandidate, ) -> Result<()>
The security notice that makes a wrong link detectable by the one party the link was proved against. Off the critical path on purpose: the link is already made and registration proceeds, so a missing template is logged and skipped rather than failing the listing.
Auto Trait Implementations§
impl<'a> Freeze for FastTrackRun<'a>
impl<'a> !RefUnwindSafe for FastTrackRun<'a>
impl<'a> Send for FastTrackRun<'a>
impl<'a> Sync for FastTrackRun<'a>
impl<'a> Unpin for FastTrackRun<'a>
impl<'a> UnsafeUnpin for FastTrackRun<'a>
impl<'a> !UnwindSafe for FastTrackRun<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Applies the layer to a service and wraps it in [
Layered].§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§impl<T> ServiceExt for T
impl<T> ServiceExt for T
§fn map_response_body<F>(self, f: F) -> MapResponseBody<Self, F>where
Self: Sized,
fn map_response_body<F>(self, f: F) -> MapResponseBody<Self, F>where
Self: Sized,
Apply a transformation to the response body. Read more
§fn decompression(self) -> Decompression<Self>where
Self: Sized,
fn decompression(self) -> Decompression<Self>where
Self: Sized,
Decompress response bodies. Read more
§fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>where
Self: Sized,
fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>where
Self: Sized,
High level tracing that classifies responses using HTTP status codes. Read more
§fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>where
Self: Sized,
fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>where
Self: Sized,
High level tracing that classifies responses using gRPC headers. Read more