pub struct RemoteLinks { /* private fields */ }Expand description
A links store served by a LinksServer, usable
wherever a local store is.
Implementations§
Source§impl RemoteLinks
impl RemoteLinks
Sourcepub fn connect(
address: impl ToSocketAddrs,
protocol: impl LinoProtocol + 'static,
) -> ProtocolResult<Self>
pub fn connect( address: impl ToSocketAddrs, protocol: impl LinoProtocol + 'static, ) -> ProtocolResult<Self>
Connects to the server at address.
Sourcepub fn new(client: LinksClient) -> Self
pub fn new(client: LinksClient) -> Self
Uses an existing connection.
Sourcepub fn execute(
&self,
operation: &LinksOperation,
) -> ProtocolResult<LinoDocument>
pub fn execute( &self, operation: &LinksOperation, ) -> ProtocolResult<LinoDocument>
Runs one operation on the server and returns its reply.
Sourcepub fn count_matching(&self, restriction: &[Part]) -> ProtocolResult<u32>
pub fn count_matching(&self, restriction: &[Part]) -> ProtocolResult<u32>
Number of links matching restriction.
Sourcepub fn links_matching(&self, restriction: &[Part]) -> ProtocolResult<Vec<Link>>
pub fn links_matching(&self, restriction: &[Part]) -> ProtocolResult<Vec<Link>>
Links matching restriction, ordered by index.
Sourcepub fn changes(&self, operation: &LinksOperation) -> ProtocolResult<Vec<Change>>
pub fn changes(&self, operation: &LinksOperation) -> ProtocolResult<Vec<Change>>
Runs a create, update or delete and returns its changes.
Trait Implementations§
Source§impl Debug for RemoteLinks
impl Debug for RemoteLinks
Source§impl Doublets<u32> for RemoteLinks
impl Doublets<u32> for RemoteLinks
Source§fn get_link(&self, index: u32) -> Option<DoubletsLink<u32>>
fn get_link(&self, index: u32) -> Option<DoubletsLink<u32>>
Returns the link at
index, or None if it does not exist.§fn create_by_with<F>(
&mut self,
query: impl ToQuery<T>,
handler: F,
) -> Result<Flow, Error<T>>
fn create_by_with<F>( &mut self, query: impl ToQuery<T>, handler: F, ) -> Result<Flow, Error<T>>
Creates a link matching
query, calling handler on each created link.§fn create_by(&mut self, query: impl ToQuery<T>) -> Result<T, Error<T>>where
Self: Sized,
fn create_by(&mut self, query: impl ToQuery<T>) -> Result<T, Error<T>>where
Self: Sized,
Creates a link matching
query and returns its index.§fn create_with<F>(&mut self, handler: F) -> Result<Flow, Error<T>>
fn create_with<F>(&mut self, handler: F) -> Result<Flow, Error<T>>
Creates a new link and calls
handler with the before/after states.§fn create(&mut self) -> Result<T, Error<T>>where
Self: Sized,
fn create(&mut self) -> Result<T, Error<T>>where
Self: Sized,
Creates a new uninitialized link and returns its index.
§fn each_by<F>(&self, query: impl ToQuery<T>, handler: F) -> Flow
fn each_by<F>(&self, query: impl ToQuery<T>, handler: F) -> Flow
Iterates over links matching
query, calling handler for each.§fn each<F>(&self, handler: F) -> Flow
fn each<F>(&self, handler: F) -> Flow
Iterates over all links in the store, calling
handler for each.§fn update_by_with<H>(
&mut self,
query: impl ToQuery<T>,
change: impl ToQuery<T>,
handler: H,
) -> Result<Flow, Error<T>>
fn update_by_with<H>( &mut self, query: impl ToQuery<T>, change: impl ToQuery<T>, handler: H, ) -> Result<Flow, Error<T>>
Updates links matching
query to change, calling handler with before/after.§fn update_by(
&mut self,
query: impl ToQuery<T>,
change: impl ToQuery<T>,
) -> Result<T, Error<T>>where
Self: Sized,
fn update_by(
&mut self,
query: impl ToQuery<T>,
change: impl ToQuery<T>,
) -> Result<T, Error<T>>where
Self: Sized,
Updates links matching
query to change and returns the updated link’s index.§fn update_with<F>(
&mut self,
index: T,
source: T,
target: T,
handler: F,
) -> Result<Flow, Error<T>>
fn update_with<F>( &mut self, index: T, source: T, target: T, handler: F, ) -> Result<Flow, Error<T>>
Updates the link at
index to (index, source, target), calling handler.§fn update(&mut self, index: T, source: T, target: T) -> Result<T, Error<T>>where
Self: Sized,
fn update(&mut self, index: T, source: T, target: T) -> Result<T, Error<T>>where
Self: Sized,
Updates the link at
index to (index, source, target) and returns the index.§fn delete_by_with<F>(
&mut self,
query: impl ToQuery<T>,
handler: F,
) -> Result<Flow, Error<T>>
fn delete_by_with<F>( &mut self, query: impl ToQuery<T>, handler: F, ) -> Result<Flow, Error<T>>
Deletes links matching
query, calling handler with before/after states.§fn delete_by(&mut self, query: impl ToQuery<T>) -> Result<T, Error<T>>where
Self: Sized,
fn delete_by(&mut self, query: impl ToQuery<T>) -> Result<T, Error<T>>where
Self: Sized,
Deletes links matching
query and returns the deleted link’s index.§fn delete_with<F>(&mut self, index: T, handler: F) -> Result<Flow, Error<T>>
fn delete_with<F>(&mut self, index: T, handler: F) -> Result<Flow, Error<T>>
Deletes the link at
index, calling handler with before/after states.§fn delete(&mut self, index: T) -> Result<T, Error<T>>where
Self: Sized,
fn delete(&mut self, index: T) -> Result<T, Error<T>>where
Self: Sized,
Deletes the link at
index and returns its former index.§fn try_get_link(&self, index: T) -> Result<Link<T>, Error<T>>
fn try_get_link(&self, index: T) -> Result<Link<T>, Error<T>>
Returns the link at
index, or Err(Error::NotExists) if it does not exist.§fn delete_all(&mut self) -> Result<(), Error<T>>where
Self: Sized,
fn delete_all(&mut self) -> Result<(), Error<T>>where
Self: Sized,
Deletes all links in the store.
§fn delete_query_with<F>(
&mut self,
query: impl ToQuery<T>,
handler: F,
) -> Result<(), Error<T>>
fn delete_query_with<F>( &mut self, query: impl ToQuery<T>, handler: F, ) -> Result<(), Error<T>>
Deletes all links matching
query, calling handler for each deletion.§fn delete_usages_with<F>(
&mut self,
index: T,
handler: F,
) -> Result<(), Error<T>>
fn delete_usages_with<F>( &mut self, index: T, handler: F, ) -> Result<(), Error<T>>
Deletes all links that use
index as a source or target, calling handler for each.§fn delete_usages(&mut self, index: T) -> Result<(), Error<T>>where
Self: Sized,
fn delete_usages(&mut self, index: T) -> Result<(), Error<T>>where
Self: Sized,
Deletes all links that use
index as a source or target.§fn create_point(&mut self) -> Result<T, Error<T>>where
Self: Sized,
fn create_point(&mut self) -> Result<T, Error<T>>where
Self: Sized,
Creates a self-referential point link and returns its index.
§fn create_link_with<F>(
&mut self,
source: T,
target: T,
handler: F,
) -> Result<Flow, Error<T>>
fn create_link_with<F>( &mut self, source: T, target: T, handler: F, ) -> Result<Flow, Error<T>>
Creates a link from
source to target, calling handler with before/after states.§fn create_link(&mut self, source: T, target: T) -> Result<T, Error<T>>where
Self: Sized,
fn create_link(&mut self, source: T, target: T) -> Result<T, Error<T>>where
Self: Sized,
Creates a link from
source to target and returns its index.§fn found(&self, query: impl ToQuery<T>) -> boolwhere
Self: Sized,
fn found(&self, query: impl ToQuery<T>) -> boolwhere
Self: Sized,
Returns
true if at least one link matches query.§fn find(&self, query: impl ToQuery<T>) -> Option<Link<T>>where
Self: Sized,
fn find(&self, query: impl ToQuery<T>) -> Option<Link<T>>where
Self: Sized,
Returns the first link matching
query, or None.§fn search(&self, source: T, target: T) -> Option<T>where
Self: Sized,
fn search(&self, source: T, target: T) -> Option<T>where
Self: Sized,
Returns the index of a link with the given
source and target, or None.§fn search_or(&self, source: T, target: T, default: T) -> Twhere
Self: Sized,
fn search_or(&self, source: T, target: T, default: T) -> Twhere
Self: Sized,
👎Deprecated:
use search instead
§fn single(&self, query: impl ToQuery<T>) -> Option<Link<T>>where
Self: Sized,
fn single(&self, query: impl ToQuery<T>) -> Option<Link<T>>where
Self: Sized,
Returns the link matching
query only if exactly one link matches; None otherwise.§fn get_or_create(&mut self, source: T, target: T) -> Result<T, Error<T>>where
Self: Sized,
fn get_or_create(&mut self, source: T, target: T) -> Result<T, Error<T>>where
Self: Sized,
Returns the index of the
(source, target) link, creating it if it does not exist.§fn count_usages(&self, index: T) -> Result<T, Error<T>>where
Self: Sized,
fn count_usages(&self, index: T) -> Result<T, Error<T>>where
Self: Sized,
Returns the number of other links that reference
index as a source or target.§fn usages(&self, index: T) -> Result<Vec<T>, Error<T>>where
Self: Sized,
fn usages(&self, index: T) -> Result<Vec<T>, Error<T>>where
Self: Sized,
Returns the indices of all links that reference
index as a source or target.§fn exist(&self, link: T) -> boolwhere
Self: Sized,
fn exist(&self, link: T) -> boolwhere
Self: Sized,
Returns
true if the link at link exists (internal or external).§fn has_usages(&self, link: T) -> boolwhere
Self: Sized,
fn has_usages(&self, link: T) -> boolwhere
Self: Sized,
Returns
true if any other link references link as a source or target.§fn rebase_with<F>(&mut self, old: T, new: T, handler: F) -> Result<(), Error<T>>
fn rebase_with<F>(&mut self, old: T, new: T, handler: F) -> Result<(), Error<T>>
Re-points all usages of
old to new, calling handler for each update.§fn rebase(&mut self, old: T, new: T) -> Result<T, Error<T>>where
Self: Sized,
fn rebase(&mut self, old: T, new: T) -> Result<T, Error<T>>where
Self: Sized,
Re-points all usages of
old to new and returns new.§fn rebase_and_delete(&mut self, old: T, new: T) -> Result<T, Error<T>>where
Self: Sized,
fn rebase_and_delete(&mut self, old: T, new: T) -> Result<T, Error<T>>where
Self: Sized,
Re-points all usages of
old to new, then deletes old. Returns new.Source§impl Links<u32> for RemoteLinks
impl Links<u32> for RemoteLinks
Source§fn create_links(
&mut self,
_query: &[u32],
handler: WriteHandler<'_, u32>,
) -> Result<Flow, Error<u32>>
fn create_links( &mut self, _query: &[u32], handler: WriteHandler<'_, u32>, ) -> Result<Flow, Error<u32>>
Creates an empty (index: 0 0) link, like every doublets store.
Source§fn constants(&self) -> &LinksConstants<u32>
fn constants(&self) -> &LinksConstants<u32>
Returns the store’s [
LinksConstants] (any/null/range values).Source§fn count_links(&self, query: &[u32]) -> u32
fn count_links(&self, query: &[u32]) -> u32
Counts links that match
query.Source§fn each_links(&self, query: &[u32], handler: ReadHandler<'_, u32>) -> Flow
fn each_links(&self, query: &[u32], handler: ReadHandler<'_, u32>) -> Flow
Iterates over links matching
query, calling handler for each.Source§impl NamedTypeLinks for RemoteLinks
impl NamedTypeLinks for RemoteLinks
Source§fn ensure_created(&mut self, id: u32) -> u32
fn ensure_created(&mut self, id: u32) -> u32
Asks for links until the server hands out id, then deletes the ones
handed out on the way, exactly like LinkStorage::ensure_created.
Source§fn save(&mut self) -> Result<()>
fn save(&mut self) -> Result<()>
The server saves after every change, so there is nothing to flush.
fn create(&mut self, source: u32, target: u32) -> u32
fn get_link(&mut self, id: u32) -> Option<Link>
fn exists(&mut self, id: u32) -> bool
Source§fn update_observed(
&mut self,
id: u32,
source: u32,
target: u32,
observer: ChangeObserver<'_>,
) -> Result<Link>
fn update_observed( &mut self, id: u32, source: u32, target: u32, observer: ChangeObserver<'_>, ) -> Result<Link>
Self::update, reporting every change the update caused. Read moreSource§fn delete_observed(
&mut self,
id: u32,
observer: ChangeObserver<'_>,
) -> Result<Link>
fn delete_observed( &mut self, id: u32, observer: ChangeObserver<'_>, ) -> Result<Link>
Self::delete, reporting every change the deletion caused. Read morefn all_links(&mut self) -> Vec<Link> ⓘ
fn search(&mut self, source: u32, target: u32) -> Option<u32>
fn get_or_create(&mut self, source: u32, target: u32) -> u32
fn get_name(&mut self, id: u32) -> Result<Option<String>>
fn set_name(&mut self, id: u32, name: &str) -> Result<u32>
fn get_by_name(&mut self, name: &str) -> Result<Option<u32>>
fn remove_name(&mut self, id: u32) -> Result<()>
fn try_ensure_created(&mut self, id: u32) -> Result<u32>
fn update(&mut self, id: u32, source: u32, target: u32) -> Result<Link>
fn delete(&mut self, id: u32) -> Result<Link>
fn get_or_create_named(&mut self, name: &str) -> Result<u32>
fn format_reference(&mut self, id: u32) -> Result<String>
fn format_lino(&mut self, link: &Link) -> Result<String>
fn lino_lines(&mut self) -> Result<Vec<String>>
fn write_lino_output<P: AsRef<Path>>(&mut self, path: P) -> Result<()>
fn print_all_lino(&mut self) -> Result<()>
fn print_change_lino( &mut self, before: &Option<Link>, after: &Option<Link>, ) -> Result<()>
fn format_structure(&mut self, id: u32) -> Result<String>
fn format_structure_recursive( &mut self, id: u32, visited: &mut HashSet<u32>, ) -> Result<String>
Auto Trait Implementations§
impl !Freeze for RemoteLinks
impl RefUnwindSafe for RemoteLinks
impl Send for RemoteLinks
impl Sync for RemoteLinks
impl Unpin for RemoteLinks
impl UnsafeUnpin for RemoteLinks
impl UnwindSafe for RemoteLinks
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, L> DecoratorsExt<T> for Lwhere
T: LinkReference,
L: Doublets<T>,
impl<T, L> DecoratorsExt<T> for Lwhere
T: LinkReference,
L: Doublets<T>,
§fn with_uniqueness<P>(
self,
_policy: P,
) -> <P as UniquenessPolicy>::Decorator<T, Self>where
P: UniquenessPolicy,
fn with_uniqueness<P>(
self,
_policy: P,
) -> <P as UniquenessPolicy>::Decorator<T, Self>where
P: UniquenessPolicy,
§fn with_usages<P>(self, _policy: P) -> <P as UsagesPolicy>::Decorator<T, Self>where
P: UsagesPolicy,
fn with_usages<P>(self, _policy: P) -> <P as UsagesPolicy>::Decorator<T, Self>where
P: UsagesPolicy,
§fn with_usages_validation(self) -> UsagesValidator<T, Self>
fn with_usages_validation(self) -> UsagesValidator<T, Self>
Wraps in
UsagesValidator.§fn with_cascade_usages_resolution(self) -> CascadeUsagesResolver<T, Self>
fn with_cascade_usages_resolution(self) -> CascadeUsagesResolver<T, Self>
Wraps in
CascadeUsagesResolver.§fn with_inner_reference_existence_validation(
self,
) -> InnerReferenceExistenceValidator<T, Self>
fn with_inner_reference_existence_validation( self, ) -> InnerReferenceExistenceValidator<T, Self>
Wraps in
InnerReferenceExistenceValidator.§fn with_non_existent_dependencies_creation(
self,
) -> NonExistentDependenciesCreator<T, Self>
fn with_non_existent_dependencies_creation( self, ) -> NonExistentDependenciesCreator<T, Self>
Wraps in
NonExistentDependenciesCreator.§fn with_itself_constant_resolution(
self,
) -> ItselfConstantToSelfReferenceResolver<T, Self>
fn with_itself_constant_resolution( self, ) -> ItselfConstantToSelfReferenceResolver<T, Self>
Wraps in
ItselfConstantToSelfReferenceResolver.§fn with_null_constant_resolution(
self,
) -> NullConstantToSelfReferenceResolver<T, Self>
fn with_null_constant_resolution( self, ) -> NullConstantToSelfReferenceResolver<T, Self>
Wraps in
NullConstantToSelfReferenceResolver.§fn with_non_null_contents_deletion_resolution(
self,
) -> NonNullContentsLinkDeletionResolver<T, Self>
fn with_non_null_contents_deletion_resolution( self, ) -> NonNullContentsLinkDeletionResolver<T, Self>
Wraps in
NonNullContentsLinkDeletionResolver.§fn with_logging<W>(self, writer: W) -> LoggingDecorator<T, Self, W>
fn with_logging<W>(self, writer: W) -> LoggingDecorator<T, Self, W>
Wraps in
LoggingDecorator, logging every mutation to writer.§fn with_no_exceptions(self) -> NoExceptionsDecorator<T, Self>
fn with_no_exceptions(self) -> NoExceptionsDecorator<T, Self>
Wraps in
NoExceptionsDecorator.§fn with_automatic_uniqueness_and_usages_resolution(
self,
) -> CascadeUniquenessAndUsagesResolver<T, NonNullContentsLinkDeletionResolver<T, CascadeUsagesResolver<T, Self>>>
fn with_automatic_uniqueness_and_usages_resolution( self, ) -> CascadeUniquenessAndUsagesResolver<T, NonNullContentsLinkDeletionResolver<T, CascadeUsagesResolver<T, Self>>>
Builds the same stack as C#
ILinksExtensions.DecorateWithAutomaticUniquenessAndUsagesResolution:
CascadeUsagesResolver innermost, then NonNullContentsLinkDeletionResolver,
then CascadeUniquenessAndUsagesResolver outermost.§impl<T, All> DoubletsExt<T> for Allwhere
T: LinkReference,
All: Doublets<T>,
impl<T, All> DoubletsExt<T> for Allwhere
T: LinkReference,
All: Doublets<T>,
§fn iter(
&self,
) -> impl Iterator<Item = Link<T>> + ExactSizeIterator + DoubleEndedIterator
fn iter( &self, ) -> impl Iterator<Item = Link<T>> + ExactSizeIterator + DoubleEndedIterator
Returns an iterator over all links in the store.
§fn each_iter(
&self,
query: impl ToQuery<T>,
) -> impl Iterator<Item = Link<T>> + ExactSizeIterator + DoubleEndedIterator
fn each_iter( &self, query: impl ToQuery<T>, ) -> impl Iterator<Item = Link<T>> + ExactSizeIterator + DoubleEndedIterator
Returns an iterator over links matching
query.