# OpcShelvedStateMachineNode Members

> Reference: Defines a specialization of the OpcFiniteStateMachineNode which implements a sub-state machine that represents an advanced alarm filtering model.

<dl class="api-definition">
<dt>Type</dt>
<dd><a href="./">OpcShelvedStateMachineNode</a></dd>
<dt>Namespace</dt>
<dd><a href="../namespaces/opc.uafx">Opc.UaFx</a></dd>
<dt>Assembly</dt>
<dd>Opc.UaFx.Advanced.dll</dd>
<dt>Package</dt>
<dd>Opc.UaFx.Advanced v2.59.0</dd>
</dl>

Inherits members from [OpcFiniteStateMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/members), [OpcObjectNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcobjectnode/members), [OpcInstanceNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcinstancenode/members), [OpcNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members).

## Constructors

### OpcShelvedStateMachineNode

<span class="api-meta">6 overloads</span>

| Overload | Description |
|---|---|
| [OpcShelvedStateMachineNode(OpcName)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcshelvedstatemachinenode/members#opcshelvedstatemachinenode-opc-uafx-opcname) | Initializes a new instance of the [OpcShelvedStateMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcshelvedstatemachinenode/) class accessible by the `name` specified. |
| [OpcShelvedStateMachineNode(OpcName, OpcNodeId)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcshelvedstatemachinenode/members#opcshelvedstatemachinenode-opc-uafx-opcname-opc-uafx-opcnodeid) | Initializes a new instance of the [OpcShelvedStateMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcshelvedstatemachinenode/) class accessible by the `name` and `id` specified. |
| [OpcShelvedStateMachineNode(IOpcNode, OpcName)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcshelvedstatemachinenode/members#opcshelvedstatemachinenode-opc-uafx-iopcnode-opc-uafx-opcname) | Initializes a new instance of the [OpcShelvedStateMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcshelvedstatemachinenode/) class accessible by the `name` specified as a child node of the `parent` node given. |
| [OpcShelvedStateMachineNode(IOpcNode, OpcName, OpcNodeId)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcshelvedstatemachinenode/members#opcshelvedstatemachinenode-opc-uafx-iopcnode-opc-uafx-opcname-opc-uafx-opcnodeid) | Initializes a new instance of the [OpcShelvedStateMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcshelvedstatemachinenode/) class accessible by the `name` and `id` specified as a child node of the `parent` node given. |
| [OpcShelvedStateMachineNode(ShelvedStateMachineState)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcshelvedstatemachinenode/members#opcshelvedstatemachinenode-opc-ua-shelvedstatemachinestate)<span class="api-meta">protected · since v2.50</span> | Initializes a new instance of the [OpcShelvedStateMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcshelvedstatemachinenode/) class using the `content` as the instance to wrap. |
| [OpcShelvedStateMachineNode(ShelvedStateMachineState, OpcNodeModel)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcshelvedstatemachinenode/members#opcshelvedstatemachinenode-opc-ua-shelvedstatemachinestate-opc-uafx-opcnodemodel)<span class="api-meta">protected · since v2.50</span> | Initializes a new instance of the [OpcShelvedStateMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcshelvedstatemachinenode/) class using the `content` as the instance to wrap. |

#### OpcShelvedStateMachineNode(OpcName)

Initializes a new instance of the [OpcShelvedStateMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcshelvedstatemachinenode/) class accessible by the `name` specified.

<div class="api-signature" data-lang="csharp">

```csharp
public OpcShelvedStateMachineNode(OpcName name)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Sub New(name As OpcName)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `name` | [OpcName](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcname/) | The [OpcName](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcname/) through that the new shelved state machine node can be accessed. |

#### OpcShelvedStateMachineNode(OpcName, OpcNodeId)

Initializes a new instance of the [OpcShelvedStateMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcshelvedstatemachinenode/) class accessible by the `name` and `id` specified.

<div class="api-signature" data-lang="csharp">

```csharp
public OpcShelvedStateMachineNode(OpcName name, OpcNodeId id)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Sub New(name As OpcName, id As OpcNodeId)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `name` | [OpcName](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcname/) | The [OpcName](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcname/) through that the new shelved state machine node can be accessed. |
| `id` | [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) | The [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) through that the new shelved state machine node can be identified and accessed. |

#### OpcShelvedStateMachineNode(IOpcNode, OpcName)

Initializes a new instance of the [OpcShelvedStateMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcshelvedstatemachinenode/) class accessible by the `name` specified as a child node of the `parent` node given.

<div class="api-signature" data-lang="csharp">

```csharp
public OpcShelvedStateMachineNode(IOpcNode parent, OpcName name)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Sub New(parent As IOpcNode, name As OpcName)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `parent` | [IOpcNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnode/) | The [IOpcNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnode/) used as the parent node or a null reference (Nothing in Visual Basic) in the case there is no parent node available. |
| `name` | [OpcName](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcname/) | The [OpcName](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcname/) through that the new shelved state machine node can be accessed. |

#### OpcShelvedStateMachineNode(IOpcNode, OpcName, OpcNodeId)

Initializes a new instance of the [OpcShelvedStateMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcshelvedstatemachinenode/) class accessible by the `name` and `id` specified as a child node of the `parent` node given.

<div class="api-signature" data-lang="csharp">

```csharp
public OpcShelvedStateMachineNode(IOpcNode parent, OpcName name, OpcNodeId id)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Sub New(parent As IOpcNode, name As OpcName, id As OpcNodeId)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `parent` | [IOpcNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnode/) | The [IOpcNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnode/) used as the parent node or a null reference (Nothing in Visual Basic) in the case there is no parent node available. |
| `name` | [OpcName](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcname/) | The [OpcName](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcname/) through that the new shelved state machine node can be accessed. |
| `id` | [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) | The [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) through that the new shelved state machine node can be identified and accessed. |

#### OpcShelvedStateMachineNode(ShelvedStateMachineState)

<span class="api-meta">protected · since v2.50</span>

Initializes a new instance of the [OpcShelvedStateMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcshelvedstatemachinenode/) class using the `content` as the instance to wrap.

<div class="api-signature" data-lang="csharp">

```csharp
protected OpcShelvedStateMachineNode(ShelvedStateMachineState content)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Protected Sub New(content As ShelvedStateMachineState)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `content` | <abbr title="OPC Foundation stack type, not documented here: Opc.Ua.ShelvedStateMachineState">ShelvedStateMachineState</abbr> | The <abbr title="OPC Foundation stack type, not documented here: Opc.Ua.ShelvedStateMachineState">ShelvedStateMachineState</abbr> to wrap. |

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentNullException](https://learn.microsoft.com/dotnet/api/system.argumentnullexception) | The `content` is a null reference (Nothing in Visual Basic). |

#### OpcShelvedStateMachineNode(ShelvedStateMachineState, OpcNodeModel)

<span class="api-meta">protected · since v2.50</span>

Initializes a new instance of the [OpcShelvedStateMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcshelvedstatemachinenode/) class using the `content` as the instance to wrap.

<div class="api-signature" data-lang="csharp">

```csharp
protected OpcShelvedStateMachineNode(
    ShelvedStateMachineState content,
    OpcNodeModel model)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Protected Sub New(content As ShelvedStateMachineState, model As OpcNodeModel)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `content` | <abbr title="OPC Foundation stack type, not documented here: Opc.Ua.ShelvedStateMachineState">ShelvedStateMachineState</abbr> | The <abbr title="OPC Foundation stack type, not documented here: Opc.Ua.ShelvedStateMachineState">ShelvedStateMachineState</abbr> to wrap. |
| `model` | [OpcNodeModel](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodemodel/) | The [OpcNodeModel](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodemodel/) which defines the modelling directives for the new node or a null reference (Nothing in Visual Basic) if there are no directives are to be applied to the node. |

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentNullException](https://learn.microsoft.com/dotnet/api/system.argumentnullexception) | The `content` is a null reference (Nothing in Visual Basic). |

## Properties

### DefaultTypeDefinitionId

<span class="api-meta">protected · override</span>

Gets the default identifier which identifies the node that defines the underlying node type from that this [OpcInstanceNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcinstancenode/) has been created.

<div class="api-signature" data-lang="csharp">

```csharp
protected override OpcNodeId DefaultTypeDefinitionId { get; }
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Protected Overrides ReadOnly Property DefaultTypeDefinitionId As OpcNodeId
```

</div>

**Property value**

[OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/)

The [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) of the type node from that this [OpcInstanceNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcinstancenode/) has been created from. These type node defines the typical structure of an instance node of its type definition. If there exists no specific type definition node a null reference (Nothing in Visual Basic).

**Overrides**

[DefaultTypeDefinitionId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/members#defaulttypedefinitionid)

### OneShotShelveCallback

Gets or sets a callback used to shelve the condition node once.

<div class="api-signature" data-lang="csharp">

```csharp
public OpcNodeFunc<OpcShelvedStateMachineNode> OneShotShelveCallback { get; set; }
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Property OneShotShelveCallback As OpcNodeFunc(Of OpcShelvedStateMachineNode)
```

</div>

**Property value**

[OpcNodeFunc](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodefunc-1/)&lt;[OpcShelvedStateMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcshelvedstatemachinenode/)&gt;

A [OpcNodeFunc&lt;T&gt;](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodefunc-1/) used to shelve the condition node once. The value can also be a null reference (Nothing in Visual Basic).

### OneShotShelveNode

Gets the [OpcActionMethodNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcactionmethodnode/) used to handle 'OneShotShelve' method calls to shelve a condition node once.

<div class="api-signature" data-lang="csharp">

```csharp
public OpcActionMethodNode OneShotShelveNode { get; }
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public ReadOnly Property OneShotShelveNode As OpcActionMethodNode
```

</div>

**Property value**

[OpcActionMethodNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcactionmethodnode/)

An instance of the [OpcActionMethodNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcactionmethodnode/) class. Which uses an [OpcShelvedStateMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcshelvedstatemachinenode/) defined callback to shelve a condition node.

### TimedShelveCallback

Gets or sets a callback used to shelve the condition node for a specific amount of time.

<div class="api-signature" data-lang="csharp">

```csharp
public OpcNodeFunc<OpcShelvedStateMachineNode, TimeSpan> TimedShelveCallback { get; set; }
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Property TimedShelveCallback As OpcNodeFunc(Of OpcShelvedStateMachineNode, TimeSpan)
```

</div>

**Property value**

[OpcNodeFunc](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodefunc-2/)&lt;[OpcShelvedStateMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcshelvedstatemachinenode/), [TimeSpan](https://learn.microsoft.com/dotnet/api/system.timespan)&gt;

A [OpcNodeFunc&lt;T, T1&gt;](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodefunc-2/) used to shelve the condition node for a specific amount of time. The value can also be a null reference (Nothing in Visual Basic).

### TimedShelveNode

Gets the [OpcTimedShelveMethodNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opctimedshelvemethodnode/) used to handle 'TimedShelve' method calls to shelve a condition node for a specific amount of time.

<div class="api-signature" data-lang="csharp">

```csharp
public OpcTimedShelveMethodNode TimedShelveNode { get; }
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public ReadOnly Property TimedShelveNode As OpcTimedShelveMethodNode
```

</div>

**Property value**

[OpcTimedShelveMethodNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opctimedshelvemethodnode/)

An instance of the [OpcTimedShelveMethodNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opctimedshelvemethodnode/) class. Which uses an [OpcShelvedStateMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcshelvedstatemachinenode/) defined callback to shelve a condition node for a specific amount of time.

### UnshelveCallback

Gets or sets a callback used to unshelve the condition node.

<div class="api-signature" data-lang="csharp">

```csharp
public OpcNodeFunc<OpcShelvedStateMachineNode> UnshelveCallback { get; set; }
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Property UnshelveCallback As OpcNodeFunc(Of OpcShelvedStateMachineNode)
```

</div>

**Property value**

[OpcNodeFunc](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodefunc-1/)&lt;[OpcShelvedStateMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcshelvedstatemachinenode/)&gt;

A [OpcNodeFunc&lt;T&gt;](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodefunc-1/) used to unshelve the condition node. The value can also be a null reference (Nothing in Visual Basic).

### UnshelveNode

Gets the [OpcActionMethodNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcactionmethodnode/) used to handle 'Unshelve' method calls to unshelve a condition node.

<div class="api-signature" data-lang="csharp">

```csharp
public OpcActionMethodNode UnshelveNode { get; }
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public ReadOnly Property UnshelveNode As OpcActionMethodNode
```

</div>

**Property value**

[OpcActionMethodNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcactionmethodnode/)

An instance of the [OpcActionMethodNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcactionmethodnode/) class. Which uses an [OpcShelvedStateMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcshelvedstatemachinenode/) defined callback to unshelve a condition node.

### UnshelveTime

Gets the remaining time in milliseconds until the alarm automatically transitions into the un-shelved state.

<div class="api-signature" data-lang="csharp">

```csharp
public double UnshelveTime { get; }
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public ReadOnly Property UnshelveTime As Double
```

</div>

**Property value**

[Double](https://learn.microsoft.com/dotnet/api/system.double)

For the timed shelved state this time is initialised with the shelving time argument of the [TimedShelve](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcshelvedstatemachinenode/members#timedshelve) method call. For the one shot shelved state the [UnshelveTime](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcshelvedstatemachinenode/members#unshelvetime) will be a constant set to the maximum duration except if a 'MaxTimeShelved' property is provided.

### UnshelveTimeNode

Gets the [OpcPropertyNode&lt;T&gt;](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcpropertynode-1/) of the [UnshelveTime](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcshelvedstatemachinenode/members#unshelvetime) property.

<div class="api-signature" data-lang="csharp">

```csharp
public OpcPropertyNode<double> UnshelveTimeNode { get; }
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public ReadOnly Property UnshelveTimeNode As OpcPropertyNode(Of Double)
```

</div>

**Property value**

[OpcPropertyNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcpropertynode-1/)&lt;[Double](https://learn.microsoft.com/dotnet/api/system.double)&gt;

An instance of the [OpcPropertyNode&lt;T&gt;](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcpropertynode-1/) class.

## Methods

### OneShotShelve

Shelves a condition node once using the `context` specified.

<div class="api-signature" data-lang="csharp">

```csharp
public void OneShotShelve(OpcContext context)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Sub OneShotShelve(context As OpcContext)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `context` | [OpcContext](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opccontext/) | The [OpcContext](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opccontext/) to use. |

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentNullException](https://learn.microsoft.com/dotnet/api/system.argumentnullexception) | The `context` is a null reference (Nothing in Visual Basic). |
| [OpcException](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcexception/) | The call failed (see exception details for more information). |

### OneShotShelveCore

<span class="api-meta">protected · virtual</span>

Shelves a condition node once using the `context` specified.

<div class="api-signature" data-lang="csharp">

```csharp
protected virtual OpcStatusCode OneShotShelveCore(
    OpcNodeContext<OpcShelvedStateMachineNode> context)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Protected Overridable Function OneShotShelveCore(
    context As OpcNodeContext(Of OpcShelvedStateMachineNode)) As OpcStatusCode
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `context` | [OpcNodeContext](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodecontext-1/)&lt;[OpcShelvedStateMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcshelvedstatemachinenode/)&gt; | The [OpcNodeContext&lt;T&gt;](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodecontext-1/) to use to shelve a condition node once. |

**Returns**

[OpcStatusCode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcstatuscode/)

The [OpcStatusCode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcstatuscode/) specifying the outcome of the shelving using the [OneShotShelveCallback](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcshelvedstatemachinenode/members#oneshotshelvecallback) or [BadNotSupported](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcstatuscode/#badnotsupported) if there is no custom callback routine defined.

### TimedShelve

Shelves a condition node for specific amount of time using the `context` and `duration` specified.

<div class="api-signature" data-lang="csharp">

```csharp
public void TimedShelve(OpcContext context, TimeSpan duration)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Sub TimedShelve(context As OpcContext, duration As TimeSpan)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `context` | [OpcContext](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opccontext/) | The [OpcContext](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opccontext/) to use. |
| `duration` | [TimeSpan](https://learn.microsoft.com/dotnet/api/system.timespan) | The amount of time a condition node is to be shelved. |

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentNullException](https://learn.microsoft.com/dotnet/api/system.argumentnullexception) | The `context` is a null reference (Nothing in Visual Basic). |
| [OpcException](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcexception/) | The call failed (see exception details for more information). |

### TimedShelveCore

<span class="api-meta">protected · virtual</span>

Shelves a condition node using the `context` and `duration` information specified.

<div class="api-signature" data-lang="csharp">

```csharp
protected virtual OpcStatusCode TimedShelveCore(
    OpcNodeContext<OpcShelvedStateMachineNode> context,
    TimeSpan duration)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Protected Overridable Function TimedShelveCore(
    context As OpcNodeContext(Of OpcShelvedStateMachineNode),
    duration As TimeSpan) As OpcStatusCode
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `context` | [OpcNodeContext](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodecontext-1/)&lt;[OpcShelvedStateMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcshelvedstatemachinenode/)&gt; | The [OpcNodeContext&lt;T&gt;](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodecontext-1/) to use to shelve the condition node for specific amount of time. |
| `duration` | [TimeSpan](https://learn.microsoft.com/dotnet/api/system.timespan) | The amount of time a condition node is to be shelved. |

**Returns**

[OpcStatusCode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcstatuscode/)

The [OpcStatusCode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcstatuscode/) specifying the outcome of the shelving using the [TimedShelveCallback](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcshelvedstatemachinenode/members#timedshelvecallback) or [BadNotSupported](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcstatuscode/#badnotsupported) if there is no custom callback routine defined.

### Unshelve

Unshelves a condition node using the `context` specified.

<div class="api-signature" data-lang="csharp">

```csharp
public void Unshelve(OpcContext context)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Sub Unshelve(context As OpcContext)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `context` | [OpcContext](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opccontext/) | The [OpcContext](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opccontext/) to use. |

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentNullException](https://learn.microsoft.com/dotnet/api/system.argumentnullexception) | The `context` is a null reference (Nothing in Visual Basic). |
| [OpcException](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcexception/) | The call failed (see exception details for more information). |

### UnshelveCore

<span class="api-meta">protected · virtual</span>

Unshelves a condition node using the `context` specified.

<div class="api-signature" data-lang="csharp">

```csharp
protected virtual OpcStatusCode UnshelveCore(
    OpcNodeContext<OpcShelvedStateMachineNode> context)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Protected Overridable Function UnshelveCore(
    context As OpcNodeContext(Of OpcShelvedStateMachineNode)) As OpcStatusCode
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `context` | [OpcNodeContext](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodecontext-1/)&lt;[OpcShelvedStateMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcshelvedstatemachinenode/)&gt; | The [OpcNodeContext&lt;T&gt;](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodecontext-1/) to use to unshelve a condition node. |

**Returns**

[OpcStatusCode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcstatuscode/)

The [OpcStatusCode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcstatuscode/) specifying the outcome of the unshelving using the [UnshelveCallback](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcshelvedstatemachinenode/members#unshelvecallback) or [BadNotSupported](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcstatuscode/#badnotsupported) if there is no custom callback routine defined.
