#### [Abblix\.SharedSignals](https://www.abblix.com/en/docs/api/abblix-sharedsignals 'index')
### [Abblix\.SharedSignals\.Transmitter](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Transmitter 'Abblix\.SharedSignals\.Transmitter')

## PollEndpointLocator Class

Where this transmitter serves a stream's poll queue \- the "endpoint\_url value is supplied by the
Transmitter" of SSF 1\.0 Section 8\.1\.1\.1, and therefore the one thing a stream cannot be created with
poll delivery without\.

```csharp
public sealed class PollEndpointLocator
```

Inheritance [System\.Object](https://learn.microsoft.com/en-us/dotnet/api/system.object 'System\.Object') → PollEndpointLocator

### Remarks
The address has two possible sources and they answer different questions\.
- [ServedAt\(Func&lt;string,Uri&gt;\)](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Transmitter.PollEndpointLocator#Abblix.SharedSignals.Transmitter.PollEndpointLocator.ServedAt(System.Func_string,System.Uri_) 'Abblix\.SharedSignals\.Transmitter\.PollEndpointLocator\.ServedAt\(System\.Func\<string,System\.Uri\>\)') is the address the endpoint was mapped on, declared by whatever mapped
                it. That is the only code that knows: the route and its prefix belong to the web framework adapter,
                and a host may move either. A proxy that rewrites paths is covered here too, because what the
                mapping declares is the ADVERTISED prefix rather than the internal one.
- [PollEndpointFactory](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Transmitter.SharedSignalsTransmitterOptions#Abblix.SharedSignals.Transmitter.SharedSignalsTransmitterOptions.PollEndpointFactory 'Abblix\.SharedSignals\.Transmitter\.SharedSignalsTransmitterOptions\.PollEndpointFactory') is the address a host names
                itself, for a deployment the mapped one cannot describe - a separate delivery host, or a host that
                maps no routes through this framework at all. It wins.

Neither could be a default computed here. A guess assembled from the issuer alone would be right only
while the prefix is the untouched default and silently wrong afterwards - a transmitter minting and
STORING an address that answers 404, which a receiver meets long after the create it belongs to
succeeded.

A transmitter with neither source offers no poll delivery: the configuration document omits the
method and a create asking for it is refused, which is the honest answer when there is no address to
hand out.
### Constructors

## PollEndpointLocator\(SharedSignalsTransmitterOptions\) Constructor {#Abblix.SharedSignals.Transmitter.PollEndpointLocator.PollEndpointLocator(Abblix.SharedSignals.Transmitter.SharedSignalsTransmitterOptions)}

Where this transmitter serves a stream's poll queue \- the "endpoint\_url value is supplied by the
Transmitter" of SSF 1\.0 Section 8\.1\.1\.1, and therefore the one thing a stream cannot be created with
poll delivery without\.

```csharp
public PollEndpointLocator(Abblix.SharedSignals.Transmitter.SharedSignalsTransmitterOptions options);
```
#### Parameters

###### `options` [SharedSignalsTransmitterOptions](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Transmitter.SharedSignalsTransmitterOptions 'Abblix\.SharedSignals\.Transmitter\.SharedSignalsTransmitterOptions') {#Abblix.SharedSignals.Transmitter.PollEndpointLocator.PollEndpointLocator(Abblix.SharedSignals.Transmitter.SharedSignalsTransmitterOptions).options}

The deployment's one\-time decisions, holding the host's own address if it named
            one\.

### Remarks
The address has two possible sources and they answer different questions\.
- [ServedAt\(Func&lt;string,Uri&gt;\)](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Transmitter.PollEndpointLocator#Abblix.SharedSignals.Transmitter.PollEndpointLocator.ServedAt(System.Func_string,System.Uri_) 'Abblix\.SharedSignals\.Transmitter\.PollEndpointLocator\.ServedAt\(System\.Func\<string,System\.Uri\>\)') is the address the endpoint was mapped on, declared by whatever mapped
                it. That is the only code that knows: the route and its prefix belong to the web framework adapter,
                and a host may move either. A proxy that rewrites paths is covered here too, because what the
                mapping declares is the ADVERTISED prefix rather than the internal one.
- [PollEndpointFactory](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Transmitter.SharedSignalsTransmitterOptions#Abblix.SharedSignals.Transmitter.SharedSignalsTransmitterOptions.PollEndpointFactory 'Abblix\.SharedSignals\.Transmitter\.SharedSignalsTransmitterOptions\.PollEndpointFactory') is the address a host names
                itself, for a deployment the mapped one cannot describe - a separate delivery host, or a host that
                maps no routes through this framework at all. It wins.

Neither could be a default computed here. A guess assembled from the issuer alone would be right only
while the prefix is the untouched default and silently wrong afterwards - a transmitter minting and
STORING an address that answers 404, which a receiver meets long after the create it belongs to
succeeded.

A transmitter with neither source offers no poll delivery: the configuration document omits the
method and a create asking for it is refused, which is the honest answer when there is no address to
hand out.
### Properties

## PollEndpointLocator\.IsOffered Property {#Abblix.SharedSignals.Transmitter.PollEndpointLocator.IsOffered}

Whether this transmitter offers poll delivery at all \- what "delivery\_methods\_supported"
advertises \(SSF 1\.0 Section 7\.1\) and what a create naming poll is judged against\.

```csharp
public bool IsOffered { get; }
```

#### Property Value
[System\.Boolean](https://learn.microsoft.com/en-us/dotnet/api/system.boolean 'System\.Boolean')
### Methods

## PollEndpointLocator\.Of\(string\) Method {#Abblix.SharedSignals.Transmitter.PollEndpointLocator.Of(string)}

The poll endpoint of a stream, or null when there is none for it\.

```csharp
public System.Uri? Of(string streamId);
```
#### Parameters

###### `streamId` [System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String') {#Abblix.SharedSignals.Transmitter.PollEndpointLocator.Of(string).streamId}

The stream whose queue is served there\.

#### Returns
[System\.Uri](https://learn.microsoft.com/en-us/dotnet/api/system.uri 'System\.Uri')

### Remarks
Null has TWO causes and a caller that can act on them differently should ask
[IsOffered](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Transmitter.PollEndpointLocator#Abblix.SharedSignals.Transmitter.PollEndpointLocator.IsOffered 'Abblix\.SharedSignals\.Transmitter\.PollEndpointLocator\.IsOffered') which it is: this transmitter serves no poll delivery at all, or it does
and this stream still has no address \- an identifier the route cannot carry, for one\. Reading
null as the first cause alone makes the branch written for the second look unreachable, which is
why the summary above names neither\.

## PollEndpointLocator\.ServedAt\(Func\<string,Uri\>\) Method {#Abblix.SharedSignals.Transmitter.PollEndpointLocator.ServedAt(System.Func_string,System.Uri_)}

Declares where the poll endpoint is mapped, so a stream created without the host naming an address
gets one that leads back to the route serving it\.

```csharp
public void ServedAt(System.Func<string,System.Uri?> pollEndpointOf);
```
#### Parameters

###### `pollEndpointOf` [System\.Func&lt;](https://learn.microsoft.com/en-us/dotnet/api/system.func-2 'System\.Func\`2')[System\.String](https://learn.microsoft.com/en-us/dotnet/api/system.string 'System\.String')[,](https://learn.microsoft.com/en-us/dotnet/api/system.func-2 'System\.Func\`2')[System\.Uri](https://learn.microsoft.com/en-us/dotnet/api/system.uri 'System\.Uri')[&gt;](https://learn.microsoft.com/en-us/dotnet/api/system.func-2 'System\.Func\`2') {#Abblix.SharedSignals.Transmitter.PollEndpointLocator.ServedAt(System.Func_string,System.Uri_).pollEndpointOf}

Derives the mapped address of a stream's poll endpoint, or answers
            null when this stream has none \- an identifier the route cannot carry, for one\. A null is a
            refusal a caller can act on: a create or update asking for poll delivery is answered with an
            error, and a declared stream is refused at startup by
            [ConfigurationStreamStore](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Transmitter.ConfigurationStreamStore 'Abblix\.SharedSignals\.Transmitter\.ConfigurationStreamStore')\.

#### Exceptions

[System\.InvalidOperationException](https://learn.microsoft.com/en-us/dotnet/api/system.invalidoperationexception 'System\.InvalidOperationException')  
The endpoint was already mapped\. A stream's poll
            address is stored in its configuration, so a second mapping would leave every stream created
            before it pointing at the first \- and which streams those are depends on when each call ran\.

### Remarks
Called by the code that maps the route, which happens once at startup and before any stream can be
created\. It is not the host's call to make: a host naming its own address uses
[PollEndpointFactory](https://www.abblix.com/en/docs/api/abblix-sharedsignals/Abblix.SharedSignals.Transmitter.SharedSignalsTransmitterOptions#Abblix.SharedSignals.Transmitter.SharedSignalsTransmitterOptions.PollEndpointFactory 'Abblix\.SharedSignals\.Transmitter\.SharedSignalsTransmitterOptions\.PollEndpointFactory'), which this never overrides\.
