CommunitySolidServer/docs/classes/storage_lockingresourcestore.lockingresourcestore.html
2021-03-23 12:00:09 +00:00

649 lines
47 KiB
HTML

<!doctype html>
<html class="default no-js">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>LockingResourceStore | Community Solid Server - v0.8.1</title>
<meta name="description" content="Documentation for Community Solid Server - v0.8.1">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="../assets/css/main.css">
<script async src="../assets/js/search.js" id="search-script"></script>
</head>
<body>
<header>
<div class="tsd-page-toolbar">
<div class="container">
<div class="table-wrap">
<div class="table-cell" id="tsd-search" data-index="../assets/js/search.json" data-base="..">
<div class="field">
<label for="tsd-search-field" class="tsd-widget search no-caption">Search</label>
<input id="tsd-search-field" type="text" />
</div>
<ul class="results">
<li class="state loading">Preparing search index...</li>
<li class="state failure">The search index is not available</li>
</ul>
<a href="../index.html" class="title">Community Solid Server - v0.8.1</a>
</div>
<div class="table-cell" id="tsd-widgets">
<div id="tsd-filter">
<a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a>
<div class="tsd-filter-group">
<div class="tsd-select" id="tsd-filter-visibility">
<span class="tsd-select-label">All</span>
<ul class="tsd-select-list">
<li data-value="public">Public</li>
<li data-value="protected">Public/Protected</li>
<li data-value="private" class="selected">All</li>
</ul>
</div>
<input type="checkbox" id="tsd-filter-inherited" checked />
<label class="tsd-widget" for="tsd-filter-inherited">Inherited</label>
<input type="checkbox" id="tsd-filter-externals" checked />
<label class="tsd-widget" for="tsd-filter-externals">Externals</label>
</div>
</div>
<a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a>
</div>
</div>
</div>
</div>
<div class="tsd-page-title">
<div class="container">
<ul class="tsd-breadcrumb">
<li>
<a href="../modules.html">Community Solid Server - v0.8.1</a>
</li>
<li>
<a href="../modules/storage_lockingresourcestore.html">storage/LockingResourceStore</a>
</li>
<li>
<a href="storage_lockingresourcestore.lockingresourcestore.html">LockingResourceStore</a>
</li>
</ul>
<h1>Class LockingResourceStore</h1>
</div>
</div>
</header>
<div class="container container-main">
<div class="row">
<div class="col-8 col-content">
<section class="tsd-panel tsd-comment">
<div class="tsd-comment tsd-typography">
<div class="lead">
<p>Store that for every call acquires a lock before executing it on the requested resource,
and releases it afterwards.
In case the request returns a Representation the lock will only be released when the data stream is finished.</p>
</div>
<p>For auxiliary resources the lock will be applied to the associated resource.
The actual operation is still executed on the auxiliary resource.</p>
</div>
</section>
<section class="tsd-panel tsd-hierarchy">
<h3>Hierarchy</h3>
<ul class="tsd-hierarchy">
<li>
<span class="target">LockingResourceStore</span>
</li>
</ul>
</section>
<section class="tsd-panel">
<h3>Implements</h3>
<ul class="tsd-hierarchy">
<li><a href="../interfaces/storage_atomicresourcestore.atomicresourcestore.html" class="tsd-signature-type" data-tsd-kind="Interface">AtomicResourceStore</a></li>
</ul>
</section>
<section class="tsd-panel-group tsd-index-group">
<h2>Index</h2>
<section class="tsd-panel tsd-index-panel">
<div class="tsd-index-content">
<section class="tsd-index-section ">
<h3>Constructors</h3>
<ul class="tsd-index-list">
<li class="tsd-kind-constructor tsd-parent-kind-class"><a href="storage_lockingresourcestore.lockingresourcestore.html#constructor" class="tsd-kind-icon">constructor</a></li>
</ul>
</section>
<section class="tsd-index-section tsd-is-private-protected">
<h3>Properties</h3>
<ul class="tsd-index-list">
<li class="tsd-kind-property tsd-parent-kind-class tsd-is-private"><a href="storage_lockingresourcestore.lockingresourcestore.html#locks" class="tsd-kind-icon">locks</a></li>
<li class="tsd-kind-property tsd-parent-kind-class tsd-is-protected"><a href="storage_lockingresourcestore.lockingresourcestore.html#logger" class="tsd-kind-icon">logger</a></li>
<li class="tsd-kind-property tsd-parent-kind-class tsd-is-private"><a href="storage_lockingresourcestore.lockingresourcestore.html#source" class="tsd-kind-icon">source</a></li>
<li class="tsd-kind-property tsd-parent-kind-class tsd-is-private"><a href="storage_lockingresourcestore.lockingresourcestore.html#strategy" class="tsd-kind-icon">strategy</a></li>
</ul>
</section>
<section class="tsd-index-section ">
<h3>Methods</h3>
<ul class="tsd-index-list">
<li class="tsd-kind-method tsd-parent-kind-class"><a href="storage_lockingresourcestore.lockingresourcestore.html#addresource" class="tsd-kind-icon">add<wbr>Resource</a></li>
<li class="tsd-kind-method tsd-parent-kind-class tsd-is-protected"><a href="storage_lockingresourcestore.lockingresourcestore.html#createexpiringrepresentation" class="tsd-kind-icon">create<wbr>Expiring<wbr>Representation</a></li>
<li class="tsd-kind-method tsd-parent-kind-class"><a href="storage_lockingresourcestore.lockingresourcestore.html#deleteresource" class="tsd-kind-icon">delete<wbr>Resource</a></li>
<li class="tsd-kind-method tsd-parent-kind-class tsd-is-protected"><a href="storage_lockingresourcestore.lockingresourcestore.html#getlockidentifier" class="tsd-kind-icon">get<wbr>Lock<wbr>Identifier</a></li>
<li class="tsd-kind-method tsd-parent-kind-class"><a href="storage_lockingresourcestore.lockingresourcestore.html#getrepresentation" class="tsd-kind-icon">get<wbr>Representation</a></li>
<li class="tsd-kind-method tsd-parent-kind-class tsd-is-protected"><a href="storage_lockingresourcestore.lockingresourcestore.html#lockedrepresentationrun" class="tsd-kind-icon">locked<wbr>Representation<wbr>Run</a></li>
<li class="tsd-kind-method tsd-parent-kind-class"><a href="storage_lockingresourcestore.lockingresourcestore.html#modifyresource" class="tsd-kind-icon">modify<wbr>Resource</a></li>
<li class="tsd-kind-method tsd-parent-kind-class"><a href="storage_lockingresourcestore.lockingresourcestore.html#resourceexists" class="tsd-kind-icon">resource<wbr>Exists</a></li>
<li class="tsd-kind-method tsd-parent-kind-class"><a href="storage_lockingresourcestore.lockingresourcestore.html#setrepresentation" class="tsd-kind-icon">set<wbr>Representation</a></li>
<li class="tsd-kind-method tsd-parent-kind-class tsd-is-protected"><a href="storage_lockingresourcestore.lockingresourcestore.html#waitforstreamtoend" class="tsd-kind-icon">wait<wbr>For<wbr>Stream<wbr>ToEnd</a></li>
</ul>
</section>
</div>
</section>
</section>
<section class="tsd-panel-group tsd-member-group ">
<h2>Constructors</h2>
<section class="tsd-panel tsd-member tsd-kind-constructor tsd-parent-kind-class">
<a name="constructor" class="tsd-anchor"></a>
<h3>constructor</h3>
<ul class="tsd-signatures tsd-kind-constructor tsd-parent-kind-class">
<li class="tsd-signature tsd-kind-icon">new <wbr>Locking<wbr>Resource<wbr>Store<span class="tsd-signature-symbol">(</span>source<span class="tsd-signature-symbol">: </span><a href="../interfaces/storage_resourcestore.resourcestore.html" class="tsd-signature-type" data-tsd-kind="Interface">ResourceStore</a>, locks<span class="tsd-signature-symbol">: </span><a href="../interfaces/util_locking_expiringreadwritelocker.expiringreadwritelocker.html" class="tsd-signature-type" data-tsd-kind="Interface">ExpiringReadWriteLocker</a>, strategy<span class="tsd-signature-symbol">: </span><a href="../interfaces/ldp_auxiliary_auxiliaryidentifierstrategy.auxiliaryidentifierstrategy.html" class="tsd-signature-type" data-tsd-kind="Interface">AuxiliaryIdentifierStrategy</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="storage_lockingresourcestore.lockingresourcestore.html" class="tsd-signature-type" data-tsd-kind="Class">LockingResourceStore</a></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/solid/community-server/blob/54ff231/src/storage/LockingResourceStore.ts#L30">src/storage/LockingResourceStore.ts:30</a></li>
</ul>
</aside>
<h4 class="tsd-parameters-title">Parameters</h4>
<ul class="tsd-parameters">
<li>
<h5>source: <a href="../interfaces/storage_resourcestore.resourcestore.html" class="tsd-signature-type" data-tsd-kind="Interface">ResourceStore</a></h5>
</li>
<li>
<h5>locks: <a href="../interfaces/util_locking_expiringreadwritelocker.expiringreadwritelocker.html" class="tsd-signature-type" data-tsd-kind="Interface">ExpiringReadWriteLocker</a></h5>
</li>
<li>
<h5>strategy: <a href="../interfaces/ldp_auxiliary_auxiliaryidentifierstrategy.auxiliaryidentifierstrategy.html" class="tsd-signature-type" data-tsd-kind="Interface">AuxiliaryIdentifierStrategy</a></h5>
</li>
</ul>
<h4 class="tsd-returns-title">Returns <a href="storage_lockingresourcestore.lockingresourcestore.html" class="tsd-signature-type" data-tsd-kind="Class">LockingResourceStore</a></h4>
</li>
</ul>
</section>
</section>
<section class="tsd-panel-group tsd-member-group tsd-is-private-protected">
<h2>Properties</h2>
<section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-class tsd-is-private">
<a name="locks" class="tsd-anchor"></a>
<h3><span class="tsd-flag ts-flagPrivate">Private</span> <span class="tsd-flag ts-flagReadonly">Readonly</span> locks</h3>
<div class="tsd-signature tsd-kind-icon">locks<span class="tsd-signature-symbol">:</span> <a href="../interfaces/util_locking_expiringreadwritelocker.expiringreadwritelocker.html" class="tsd-signature-type" data-tsd-kind="Interface">ExpiringReadWriteLocker</a></div>
<aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/solid/community-server/blob/54ff231/src/storage/LockingResourceStore.ts#L29">src/storage/LockingResourceStore.ts:29</a></li>
</ul>
</aside>
</section>
<section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-class tsd-is-protected">
<a name="logger" class="tsd-anchor"></a>
<h3><span class="tsd-flag ts-flagProtected">Protected</span> <span class="tsd-flag ts-flagReadonly">Readonly</span> logger</h3>
<div class="tsd-signature tsd-kind-icon">logger<span class="tsd-signature-symbol">:</span> <a href="logging_logger.logger.html" class="tsd-signature-type" data-tsd-kind="Class">Logger</a><span class="tsd-signature-symbol"> = ...</span></div>
<aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/solid/community-server/blob/54ff231/src/storage/LockingResourceStore.ts#L26">src/storage/LockingResourceStore.ts:26</a></li>
</ul>
</aside>
</section>
<section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-class tsd-is-private">
<a name="source" class="tsd-anchor"></a>
<h3><span class="tsd-flag ts-flagPrivate">Private</span> <span class="tsd-flag ts-flagReadonly">Readonly</span> source</h3>
<div class="tsd-signature tsd-kind-icon">source<span class="tsd-signature-symbol">:</span> <a href="../interfaces/storage_resourcestore.resourcestore.html" class="tsd-signature-type" data-tsd-kind="Interface">ResourceStore</a></div>
<aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/solid/community-server/blob/54ff231/src/storage/LockingResourceStore.ts#L28">src/storage/LockingResourceStore.ts:28</a></li>
</ul>
</aside>
</section>
<section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-class tsd-is-private">
<a name="strategy" class="tsd-anchor"></a>
<h3><span class="tsd-flag ts-flagPrivate">Private</span> <span class="tsd-flag ts-flagReadonly">Readonly</span> strategy</h3>
<div class="tsd-signature tsd-kind-icon">strategy<span class="tsd-signature-symbol">:</span> <a href="../interfaces/ldp_auxiliary_auxiliaryidentifierstrategy.auxiliaryidentifierstrategy.html" class="tsd-signature-type" data-tsd-kind="Interface">AuxiliaryIdentifierStrategy</a></div>
<aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/solid/community-server/blob/54ff231/src/storage/LockingResourceStore.ts#L30">src/storage/LockingResourceStore.ts:30</a></li>
</ul>
</aside>
</section>
</section>
<section class="tsd-panel-group tsd-member-group ">
<h2>Methods</h2>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
<a name="addresource" class="tsd-anchor"></a>
<h3>add<wbr>Resource</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
<li class="tsd-signature tsd-kind-icon">add<wbr>Resource<span class="tsd-signature-symbol">(</span>container<span class="tsd-signature-symbol">: </span><a href="../interfaces/ldp_representation_resourceidentifier.resourceidentifier.html" class="tsd-signature-type" data-tsd-kind="Interface">ResourceIdentifier</a>, representation<span class="tsd-signature-symbol">: </span><a href="../interfaces/ldp_representation_representation.representation.html" class="tsd-signature-type" data-tsd-kind="Interface">Representation</a>, conditions<span class="tsd-signature-symbol">?: </span><a href="../interfaces/storage_conditions.conditions.html" class="tsd-signature-type" data-tsd-kind="Interface">Conditions</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="../interfaces/ldp_representation_resourceidentifier.resourceidentifier.html" class="tsd-signature-type" data-tsd-kind="Interface">ResourceIdentifier</a><span class="tsd-signature-symbol">&gt;</span></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/solid/community-server/blob/54ff231/src/storage/LockingResourceStore.ts#L49">src/storage/LockingResourceStore.ts:49</a></li>
</ul>
</aside>
<h4 class="tsd-parameters-title">Parameters</h4>
<ul class="tsd-parameters">
<li>
<h5>container: <a href="../interfaces/ldp_representation_resourceidentifier.resourceidentifier.html" class="tsd-signature-type" data-tsd-kind="Interface">ResourceIdentifier</a></h5>
</li>
<li>
<h5>representation: <a href="../interfaces/ldp_representation_representation.representation.html" class="tsd-signature-type" data-tsd-kind="Interface">Representation</a></h5>
</li>
<li>
<h5><span class="tsd-flag ts-flagOptional">Optional</span> conditions: <a href="../interfaces/storage_conditions.conditions.html" class="tsd-signature-type" data-tsd-kind="Interface">Conditions</a></h5>
</li>
</ul>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="../interfaces/ldp_representation_resourceidentifier.resourceidentifier.html" class="tsd-signature-type" data-tsd-kind="Interface">ResourceIdentifier</a><span class="tsd-signature-symbol">&gt;</span></h4>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class tsd-is-protected">
<a name="createexpiringrepresentation" class="tsd-anchor"></a>
<h3><span class="tsd-flag ts-flagProtected">Protected</span> create<wbr>Expiring<wbr>Representation</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class tsd-is-protected">
<li class="tsd-signature tsd-kind-icon">create<wbr>Expiring<wbr>Representation<span class="tsd-signature-symbol">(</span>representation<span class="tsd-signature-symbol">: </span><a href="../interfaces/ldp_representation_representation.representation.html" class="tsd-signature-type" data-tsd-kind="Interface">Representation</a>, maintainLock<span class="tsd-signature-symbol">: </span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> =&gt; </span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="../interfaces/ldp_representation_representation.representation.html" class="tsd-signature-type" data-tsd-kind="Interface">Representation</a></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/solid/community-server/blob/54ff231/src/storage/LockingResourceStore.ts#L127">src/storage/LockingResourceStore.ts:127</a></li>
</ul>
</aside>
<div class="tsd-comment tsd-typography">
<div class="lead">
<p>Wraps a representation to make it reset the timeout timer every time data is read.</p>
</div>
</div>
<h4 class="tsd-parameters-title">Parameters</h4>
<ul class="tsd-parameters">
<li>
<h5>representation: <a href="../interfaces/ldp_representation_representation.representation.html" class="tsd-signature-type" data-tsd-kind="Interface">Representation</a></h5>
<div class="tsd-comment tsd-typography">
<p>The representation to wrap</p>
</div>
</li>
<li>
<h5>maintainLock: <span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> =&gt; </span><span class="tsd-signature-type">void</span></h5>
<div class="tsd-comment tsd-typography">
<p>Function to call to reset the timer.</p>
</div>
<ul class="tsd-parameters">
<li class="tsd-parameter-signature">
<ul class="tsd-signatures tsd-kind-type-literal">
<li class="tsd-signature tsd-kind-icon"><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<h4 class="tsd-returns-title">Returns <a href="../interfaces/ldp_representation_representation.representation.html" class="tsd-signature-type" data-tsd-kind="Interface">Representation</a></h4>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
<a name="deleteresource" class="tsd-anchor"></a>
<h3>delete<wbr>Resource</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
<li class="tsd-signature tsd-kind-icon">delete<wbr>Resource<span class="tsd-signature-symbol">(</span>identifier<span class="tsd-signature-symbol">: </span><a href="../interfaces/ldp_representation_resourceidentifier.resourceidentifier.html" class="tsd-signature-type" data-tsd-kind="Interface">ResourceIdentifier</a>, conditions<span class="tsd-signature-symbol">?: </span><a href="../interfaces/storage_conditions.conditions.html" class="tsd-signature-type" data-tsd-kind="Interface">Conditions</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="../interfaces/ldp_representation_resourceidentifier.resourceidentifier.html" class="tsd-signature-type" data-tsd-kind="Interface">ResourceIdentifier</a><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">&gt;</span></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/solid/community-server/blob/54ff231/src/storage/LockingResourceStore.ts#L61">src/storage/LockingResourceStore.ts:61</a></li>
</ul>
</aside>
<h4 class="tsd-parameters-title">Parameters</h4>
<ul class="tsd-parameters">
<li>
<h5>identifier: <a href="../interfaces/ldp_representation_resourceidentifier.resourceidentifier.html" class="tsd-signature-type" data-tsd-kind="Interface">ResourceIdentifier</a></h5>
</li>
<li>
<h5><span class="tsd-flag ts-flagOptional">Optional</span> conditions: <a href="../interfaces/storage_conditions.conditions.html" class="tsd-signature-type" data-tsd-kind="Interface">Conditions</a></h5>
</li>
</ul>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="../interfaces/ldp_representation_resourceidentifier.resourceidentifier.html" class="tsd-signature-type" data-tsd-kind="Interface">ResourceIdentifier</a><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">&gt;</span></h4>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class tsd-is-protected">
<a name="getlockidentifier" class="tsd-anchor"></a>
<h3><span class="tsd-flag ts-flagProtected">Protected</span> get<wbr>Lock<wbr>Identifier</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class tsd-is-protected">
<li class="tsd-signature tsd-kind-icon">get<wbr>Lock<wbr>Identifier<span class="tsd-signature-symbol">(</span>identifier<span class="tsd-signature-symbol">: </span><a href="../interfaces/ldp_representation_resourceidentifier.resourceidentifier.html" class="tsd-signature-type" data-tsd-kind="Interface">ResourceIdentifier</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="../interfaces/ldp_representation_resourceidentifier.resourceidentifier.html" class="tsd-signature-type" data-tsd-kind="Interface">ResourceIdentifier</a></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/solid/community-server/blob/54ff231/src/storage/LockingResourceStore.ts#L77">src/storage/LockingResourceStore.ts:77</a></li>
</ul>
</aside>
<div class="tsd-comment tsd-typography">
<div class="lead">
<p>Acquires the correct identifier to lock this resource.
For auxiliary resources this means the associated identifier.</p>
</div>
</div>
<h4 class="tsd-parameters-title">Parameters</h4>
<ul class="tsd-parameters">
<li>
<h5>identifier: <a href="../interfaces/ldp_representation_resourceidentifier.resourceidentifier.html" class="tsd-signature-type" data-tsd-kind="Interface">ResourceIdentifier</a></h5>
</li>
</ul>
<h4 class="tsd-returns-title">Returns <a href="../interfaces/ldp_representation_resourceidentifier.resourceidentifier.html" class="tsd-signature-type" data-tsd-kind="Interface">ResourceIdentifier</a></h4>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
<a name="getrepresentation" class="tsd-anchor"></a>
<h3>get<wbr>Representation</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
<li class="tsd-signature tsd-kind-icon">get<wbr>Representation<span class="tsd-signature-symbol">(</span>identifier<span class="tsd-signature-symbol">: </span><a href="../interfaces/ldp_representation_resourceidentifier.resourceidentifier.html" class="tsd-signature-type" data-tsd-kind="Interface">ResourceIdentifier</a>, preferences<span class="tsd-signature-symbol">: </span><a href="../interfaces/ldp_representation_representationpreferences.representationpreferences.html" class="tsd-signature-type" data-tsd-kind="Interface">RepresentationPreferences</a>, conditions<span class="tsd-signature-symbol">?: </span><a href="../interfaces/storage_conditions.conditions.html" class="tsd-signature-type" data-tsd-kind="Interface">Conditions</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="../interfaces/ldp_representation_representation.representation.html" class="tsd-signature-type" data-tsd-kind="Interface">Representation</a><span class="tsd-signature-symbol">&gt;</span></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/solid/community-server/blob/54ff231/src/storage/LockingResourceStore.ts#L43">src/storage/LockingResourceStore.ts:43</a></li>
</ul>
</aside>
<h4 class="tsd-parameters-title">Parameters</h4>
<ul class="tsd-parameters">
<li>
<h5>identifier: <a href="../interfaces/ldp_representation_resourceidentifier.resourceidentifier.html" class="tsd-signature-type" data-tsd-kind="Interface">ResourceIdentifier</a></h5>
</li>
<li>
<h5>preferences: <a href="../interfaces/ldp_representation_representationpreferences.representationpreferences.html" class="tsd-signature-type" data-tsd-kind="Interface">RepresentationPreferences</a></h5>
</li>
<li>
<h5><span class="tsd-flag ts-flagOptional">Optional</span> conditions: <a href="../interfaces/storage_conditions.conditions.html" class="tsd-signature-type" data-tsd-kind="Interface">Conditions</a></h5>
</li>
</ul>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="../interfaces/ldp_representation_representation.representation.html" class="tsd-signature-type" data-tsd-kind="Interface">Representation</a><span class="tsd-signature-symbol">&gt;</span></h4>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class tsd-is-protected">
<a name="lockedrepresentationrun" class="tsd-anchor"></a>
<h3><span class="tsd-flag ts-flagProtected">Protected</span> locked<wbr>Representation<wbr>Run</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class tsd-is-protected">
<li class="tsd-signature tsd-kind-icon">locked<wbr>Representation<wbr>Run<span class="tsd-signature-symbol">(</span>identifier<span class="tsd-signature-symbol">: </span><a href="../interfaces/ldp_representation_resourceidentifier.resourceidentifier.html" class="tsd-signature-type" data-tsd-kind="Interface">ResourceIdentifier</a>, whileLocked<span class="tsd-signature-symbol">: </span><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> =&gt; </span><span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="../interfaces/ldp_representation_representation.representation.html" class="tsd-signature-type" data-tsd-kind="Interface">Representation</a><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="../interfaces/ldp_representation_representation.representation.html" class="tsd-signature-type" data-tsd-kind="Interface">Representation</a><span class="tsd-signature-symbol">&gt;</span></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/solid/community-server/blob/54ff231/src/storage/LockingResourceStore.ts#L93">src/storage/LockingResourceStore.ts:93</a></li>
</ul>
</aside>
<div class="tsd-comment tsd-typography">
<div class="lead">
<p>Acquires a lock that is only released when all data of the resulting representation data has been read,
an error occurs, or the timeout has been triggered.
The resulting data stream will be adapted to reset the timer every time data is read.</p>
</div>
<p>In case the data of the resulting stream is not needed it should be closed to prevent a timeout error.</p>
</div>
<h4 class="tsd-parameters-title">Parameters</h4>
<ul class="tsd-parameters">
<li>
<h5>identifier: <a href="../interfaces/ldp_representation_resourceidentifier.resourceidentifier.html" class="tsd-signature-type" data-tsd-kind="Interface">ResourceIdentifier</a></h5>
<div class="tsd-comment tsd-typography">
<p>Identifier that should be locked.</p>
</div>
</li>
<li>
<h5>whileLocked: <span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol"> =&gt; </span><span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="../interfaces/ldp_representation_representation.representation.html" class="tsd-signature-type" data-tsd-kind="Interface">Representation</a><span class="tsd-signature-symbol">&gt;</span></h5>
<div class="tsd-comment tsd-typography">
<p>Function to be executed while the resource is locked.</p>
</div>
<ul class="tsd-parameters">
<li class="tsd-parameter-signature">
<ul class="tsd-signatures tsd-kind-type-literal">
<li class="tsd-signature tsd-kind-icon"><span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="../interfaces/ldp_representation_representation.representation.html" class="tsd-signature-type" data-tsd-kind="Interface">Representation</a><span class="tsd-signature-symbol">&gt;</span></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="../interfaces/ldp_representation_representation.representation.html" class="tsd-signature-type" data-tsd-kind="Interface">Representation</a><span class="tsd-signature-symbol">&gt;</span></h4>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="../interfaces/ldp_representation_representation.representation.html" class="tsd-signature-type" data-tsd-kind="Interface">Representation</a><span class="tsd-signature-symbol">&gt;</span></h4>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
<a name="modifyresource" class="tsd-anchor"></a>
<h3>modify<wbr>Resource</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
<li class="tsd-signature tsd-kind-icon">modify<wbr>Resource<span class="tsd-signature-symbol">(</span>identifier<span class="tsd-signature-symbol">: </span><a href="../interfaces/ldp_representation_resourceidentifier.resourceidentifier.html" class="tsd-signature-type" data-tsd-kind="Interface">ResourceIdentifier</a>, patch<span class="tsd-signature-symbol">: </span><a href="../interfaces/ldp_http_patch.patch.html" class="tsd-signature-type" data-tsd-kind="Interface">Patch</a>, conditions<span class="tsd-signature-symbol">?: </span><a href="../interfaces/storage_conditions.conditions.html" class="tsd-signature-type" data-tsd-kind="Interface">Conditions</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="../interfaces/ldp_representation_resourceidentifier.resourceidentifier.html" class="tsd-signature-type" data-tsd-kind="Interface">ResourceIdentifier</a><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">&gt;</span></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/solid/community-server/blob/54ff231/src/storage/LockingResourceStore.ts#L67">src/storage/LockingResourceStore.ts:67</a></li>
</ul>
</aside>
<h4 class="tsd-parameters-title">Parameters</h4>
<ul class="tsd-parameters">
<li>
<h5>identifier: <a href="../interfaces/ldp_representation_resourceidentifier.resourceidentifier.html" class="tsd-signature-type" data-tsd-kind="Interface">ResourceIdentifier</a></h5>
</li>
<li>
<h5>patch: <a href="../interfaces/ldp_http_patch.patch.html" class="tsd-signature-type" data-tsd-kind="Interface">Patch</a></h5>
</li>
<li>
<h5><span class="tsd-flag ts-flagOptional">Optional</span> conditions: <a href="../interfaces/storage_conditions.conditions.html" class="tsd-signature-type" data-tsd-kind="Interface">Conditions</a></h5>
</li>
</ul>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="../interfaces/ldp_representation_resourceidentifier.resourceidentifier.html" class="tsd-signature-type" data-tsd-kind="Interface">ResourceIdentifier</a><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">&gt;</span></h4>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
<a name="resourceexists" class="tsd-anchor"></a>
<h3>resource<wbr>Exists</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
<li class="tsd-signature tsd-kind-icon">resource<wbr>Exists<span class="tsd-signature-symbol">(</span>identifier<span class="tsd-signature-symbol">: </span><a href="../interfaces/ldp_representation_resourceidentifier.resourceidentifier.html" class="tsd-signature-type" data-tsd-kind="Interface">ResourceIdentifier</a>, conditions<span class="tsd-signature-symbol">?: </span><a href="../interfaces/storage_conditions.conditions.html" class="tsd-signature-type" data-tsd-kind="Interface">Conditions</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">&gt;</span></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/solid/community-server/blob/54ff231/src/storage/LockingResourceStore.ts#L38">src/storage/LockingResourceStore.ts:38</a></li>
</ul>
</aside>
<h4 class="tsd-parameters-title">Parameters</h4>
<ul class="tsd-parameters">
<li>
<h5>identifier: <a href="../interfaces/ldp_representation_resourceidentifier.resourceidentifier.html" class="tsd-signature-type" data-tsd-kind="Interface">ResourceIdentifier</a></h5>
</li>
<li>
<h5><span class="tsd-flag ts-flagOptional">Optional</span> conditions: <a href="../interfaces/storage_conditions.conditions.html" class="tsd-signature-type" data-tsd-kind="Interface">Conditions</a></h5>
</li>
</ul>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">&gt;</span></h4>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
<a name="setrepresentation" class="tsd-anchor"></a>
<h3>set<wbr>Representation</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
<li class="tsd-signature tsd-kind-icon">set<wbr>Representation<span class="tsd-signature-symbol">(</span>identifier<span class="tsd-signature-symbol">: </span><a href="../interfaces/ldp_representation_resourceidentifier.resourceidentifier.html" class="tsd-signature-type" data-tsd-kind="Interface">ResourceIdentifier</a>, representation<span class="tsd-signature-symbol">: </span><a href="../interfaces/ldp_representation_representation.representation.html" class="tsd-signature-type" data-tsd-kind="Interface">Representation</a>, conditions<span class="tsd-signature-symbol">?: </span><a href="../interfaces/storage_conditions.conditions.html" class="tsd-signature-type" data-tsd-kind="Interface">Conditions</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="../interfaces/ldp_representation_resourceidentifier.resourceidentifier.html" class="tsd-signature-type" data-tsd-kind="Interface">ResourceIdentifier</a><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">&gt;</span></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/solid/community-server/blob/54ff231/src/storage/LockingResourceStore.ts#L55">src/storage/LockingResourceStore.ts:55</a></li>
</ul>
</aside>
<h4 class="tsd-parameters-title">Parameters</h4>
<ul class="tsd-parameters">
<li>
<h5>identifier: <a href="../interfaces/ldp_representation_resourceidentifier.resourceidentifier.html" class="tsd-signature-type" data-tsd-kind="Interface">ResourceIdentifier</a></h5>
</li>
<li>
<h5>representation: <a href="../interfaces/ldp_representation_representation.representation.html" class="tsd-signature-type" data-tsd-kind="Interface">Representation</a></h5>
</li>
<li>
<h5><span class="tsd-flag ts-flagOptional">Optional</span> conditions: <a href="../interfaces/storage_conditions.conditions.html" class="tsd-signature-type" data-tsd-kind="Interface">Conditions</a></h5>
</li>
</ul>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="../interfaces/ldp_representation_resourceidentifier.resourceidentifier.html" class="tsd-signature-type" data-tsd-kind="Interface">ResourceIdentifier</a><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">&gt;</span></h4>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class tsd-is-protected">
<a name="waitforstreamtoend" class="tsd-anchor"></a>
<h3><span class="tsd-flag ts-flagProtected">Protected</span> wait<wbr>For<wbr>Stream<wbr>ToEnd</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class tsd-is-protected">
<li class="tsd-signature tsd-kind-icon">wait<wbr>For<wbr>Stream<wbr>ToEnd<span class="tsd-signature-symbol">(</span>source<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Readable</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/solid/community-server/blob/54ff231/src/storage/LockingResourceStore.ts#L148">src/storage/LockingResourceStore.ts:148</a></li>
</ul>
</aside>
<div class="tsd-comment tsd-typography">
<div class="lead">
<p>Returns a promise that resolve when the source stream is finished,
either by ending or emitting an error.
In the case of an error the stream will be destroyed if it hasn&#39;t been already.</p>
</div>
</div>
<h4 class="tsd-parameters-title">Parameters</h4>
<ul class="tsd-parameters">
<li>
<h5>source: <span class="tsd-signature-type">Readable</span></h5>
<div class="tsd-comment tsd-typography">
<p>The input stream.</p>
</div>
</li>
</ul>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4>
</li>
</ul>
</section>
</section>
</div>
<div class="col-4 col-menu menu-sticky-wrap menu-highlight">
<nav class="tsd-navigation primary">
<ul>
<li class=" ">
<a href="../modules.html">Exports</a>
</li>
<li class="current tsd-kind-module">
<a href="../modules/storage_lockingresourcestore.html">storage/<wbr>Locking<wbr>Resource<wbr>Store</a>
</li>
</ul>
</nav>
<nav class="tsd-navigation secondary menu-sticky">
<ul class="before-current">
</ul>
<ul class="current">
<li class="current tsd-kind-class tsd-parent-kind-module">
<a href="storage_lockingresourcestore.lockingresourcestore.html" class="tsd-kind-icon">Locking<wbr>Resource<wbr>Store</a>
<ul>
<li class=" tsd-kind-constructor tsd-parent-kind-class">
<a href="storage_lockingresourcestore.lockingresourcestore.html#constructor" class="tsd-kind-icon">constructor</a>
</li>
<li class=" tsd-kind-property tsd-parent-kind-class tsd-is-private">
<a href="storage_lockingresourcestore.lockingresourcestore.html#locks" class="tsd-kind-icon">locks</a>
</li>
<li class=" tsd-kind-property tsd-parent-kind-class tsd-is-protected">
<a href="storage_lockingresourcestore.lockingresourcestore.html#logger" class="tsd-kind-icon">logger</a>
</li>
<li class=" tsd-kind-property tsd-parent-kind-class tsd-is-private">
<a href="storage_lockingresourcestore.lockingresourcestore.html#source" class="tsd-kind-icon">source</a>
</li>
<li class=" tsd-kind-property tsd-parent-kind-class tsd-is-private">
<a href="storage_lockingresourcestore.lockingresourcestore.html#strategy" class="tsd-kind-icon">strategy</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-class">
<a href="storage_lockingresourcestore.lockingresourcestore.html#addresource" class="tsd-kind-icon">add<wbr>Resource</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-class tsd-is-protected">
<a href="storage_lockingresourcestore.lockingresourcestore.html#createexpiringrepresentation" class="tsd-kind-icon">create<wbr>Expiring<wbr>Representation</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-class">
<a href="storage_lockingresourcestore.lockingresourcestore.html#deleteresource" class="tsd-kind-icon">delete<wbr>Resource</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-class tsd-is-protected">
<a href="storage_lockingresourcestore.lockingresourcestore.html#getlockidentifier" class="tsd-kind-icon">get<wbr>Lock<wbr>Identifier</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-class">
<a href="storage_lockingresourcestore.lockingresourcestore.html#getrepresentation" class="tsd-kind-icon">get<wbr>Representation</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-class tsd-is-protected">
<a href="storage_lockingresourcestore.lockingresourcestore.html#lockedrepresentationrun" class="tsd-kind-icon">locked<wbr>Representation<wbr>Run</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-class">
<a href="storage_lockingresourcestore.lockingresourcestore.html#modifyresource" class="tsd-kind-icon">modify<wbr>Resource</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-class">
<a href="storage_lockingresourcestore.lockingresourcestore.html#resourceexists" class="tsd-kind-icon">resource<wbr>Exists</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-class">
<a href="storage_lockingresourcestore.lockingresourcestore.html#setrepresentation" class="tsd-kind-icon">set<wbr>Representation</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-class tsd-is-protected">
<a href="storage_lockingresourcestore.lockingresourcestore.html#waitforstreamtoend" class="tsd-kind-icon">wait<wbr>For<wbr>Stream<wbr>ToEnd</a>
</li>
</ul>
</li>
</ul>
<ul class="after-current">
</ul>
</nav>
</div>
</div>
</div>
<footer>
<div class="container">
<h2>Legend</h2>
<div class="tsd-legend-group">
<ul class="tsd-legend">
<li class="tsd-kind-variable"><span class="tsd-kind-icon">Variable</span></li>
<li class="tsd-kind-function"><span class="tsd-kind-icon">Function</span></li>
<li class="tsd-kind-function tsd-has-type-parameter"><span class="tsd-kind-icon">Function with type parameter</span></li>
<li class="tsd-kind-type-alias"><span class="tsd-kind-icon">Type alias</span></li>
<li class="tsd-kind-type-alias tsd-has-type-parameter"><span class="tsd-kind-icon">Type alias with type parameter</span></li>
</ul>
<ul class="tsd-legend">
<li class="tsd-kind-class"><span class="tsd-kind-icon">Class</span></li>
<li class="tsd-kind-class tsd-has-type-parameter"><span class="tsd-kind-icon">Class with type parameter</span></li>
<li class="tsd-kind-constructor tsd-parent-kind-class"><span class="tsd-kind-icon">Constructor</span></li>
<li class="tsd-kind-method tsd-parent-kind-class"><span class="tsd-kind-icon">Method</span></li>
</ul>
<ul class="tsd-legend">
<li class="tsd-kind-interface"><span class="tsd-kind-icon">Interface</span></li>
<li class="tsd-kind-interface tsd-has-type-parameter"><span class="tsd-kind-icon">Interface with type parameter</span></li>
</ul>
<ul class="tsd-legend">
<li class="tsd-kind-property tsd-parent-kind-class tsd-is-protected"><span class="tsd-kind-icon">Protected property</span></li>
<li class="tsd-kind-method tsd-parent-kind-class tsd-is-protected"><span class="tsd-kind-icon">Protected method</span></li>
</ul>
<ul class="tsd-legend">
<li class="tsd-kind-property tsd-parent-kind-class tsd-is-private"><span class="tsd-kind-icon">Private property</span></li>
</ul>
</div>
</div>
</footer>
<div class="overlay"></div>
<script src="../assets/js/main.js"></script>
</body>
</html>