# ISiloStatusOracle Methods

[Type overview](/orleans/docs/api/csharp/microsoft.orleans.runtime/orleans.runtime.isilostatusoracle/)

## GetActiveSilos {#getactivesilos-c05c2754}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.runtime/orleans.runtime.isilostatusoracle/methods/getactivesilos-c05c2754/)

```csharp
public abstract SiloAddress[] GetActiveSilos()
```

Gets the currently active silos.

## GetApproximateSiloStatus(SiloAddress) {#getapproximatesilostatus-orleans-runtime-siloaddress-21e73e85}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.runtime/orleans.runtime.isilostatusoracle/methods/getapproximatesilostatus-orleans-runtime-siloaddress-21e73e85/)

```csharp
public abstract SiloStatus GetApproximateSiloStatus(SiloAddress siloAddress)
```

Gets the status of a given silo. This method returns an approximate view on the status of a given silo. In particular, this oracle may think the given silo is alive, while it may already have failed. If this oracle thinks the given silo is dead, it has been authoritatively told so by ISiloDirectory.

### Parameters

- `siloAddress` (`SiloAddress`): A silo whose status we are interested in.

### Returns

The status of a given silo.

## GetApproximateSiloStatuses(bool) {#getapproximatesilostatuses-bool-cf079394}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.runtime/orleans.runtime.isilostatusoracle/methods/getapproximatesilostatuses-bool-cf079394/)

```csharp
public abstract Dictionary<SiloAddress, SiloStatus> GetApproximateSiloStatuses(bool onlyActive = false)
```

Gets the statuses of all silo. This method returns an approximate view on the statuses of all silo.

### Parameters

- `onlyActive` (`bool`): Include only silo who are currently considered to be active. If false, include all.

### Returns

A list of silo statuses.

## IsDeadSilo(SiloAddress) {#isdeadsilo-orleans-runtime-siloaddress-f054a66e}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.runtime/orleans.runtime.isilostatusoracle/methods/isdeadsilo-orleans-runtime-siloaddress-f054a66e/)

```csharp
public abstract bool IsDeadSilo(SiloAddress silo)
```

Gets a value indicating whether the current silo is dead.

### Parameters

- `silo` (`SiloAddress`)

### Returns

The silo so ask about.

## IsFunctionalDirectory(SiloAddress) {#isfunctionaldirectory-orleans-runtime-siloaddress-04deb761}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.runtime/orleans.runtime.isilostatusoracle/methods/isfunctionaldirectory-orleans-runtime-siloaddress-04deb761/)

```csharp
public abstract bool IsFunctionalDirectory(SiloAddress siloAddress)
```

Gets a value indicating whether the current silo is valid for creating new activations on or for directory lookups.

### Parameters

- `siloAddress` (`SiloAddress`)

### Returns

The silo so ask about.

## SubscribeToSiloStatusEvents(ISiloStatusListener) {#subscribetosilostatusevents-orleans-runtime-isilostatuslistener-e1584b1c}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.runtime/orleans.runtime.isilostatusoracle/methods/subscribetosilostatusevents-orleans-runtime-isilostatuslistener-e1584b1c/)

```csharp
public abstract bool SubscribeToSiloStatusEvents(ISiloStatusListener observer)
```

Subscribe to status events about all silos.

### Parameters

- `observer` (`ISiloStatusListener`): An observer async interface to receive silo status notifications.

### Returns

A value indicating whether subscription succeeded or not.

## TryGetSiloName(SiloAddress, string) {#trygetsiloname-orleans-runtime-siloaddress-out-string-c4b5ff1f}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.runtime/orleans.runtime.isilostatusoracle/methods/trygetsiloname-orleans-runtime-siloaddress-out-string-c4b5ff1f/)

```csharp
public abstract bool TryGetSiloName(SiloAddress siloAddress, out string siloName)
```

Gets the name of a silo. Silo name is assumed to be static and does not change across restarts of the same silo.

### Parameters

- `siloAddress` (`SiloAddress`): A silo whose name we are interested in.
- `siloName` (`string`): A silo name.

### Returns

TTrue if could return the requested name, false otherwise.

## UnSubscribeFromSiloStatusEvents(ISiloStatusListener) {#unsubscribefromsilostatusevents-orleans-runtime-isilostatuslistener-5539131c}

[Dedicated page](/orleans/docs/api/csharp/microsoft.orleans.runtime/orleans.runtime.isilostatusoracle/methods/unsubscribefromsilostatusevents-orleans-runtime-isilostatuslistener-5539131c/)

```csharp
public abstract bool UnSubscribeFromSiloStatusEvents(ISiloStatusListener observer)
```

UnSubscribe from status events about all silos.

### Parameters

- `observer` (`ISiloStatusListener`)

### Returns

A value indicating whether subscription succeeded or not.
