---
title: llarp::service::IntroSet

---

# llarp::service::IntroSet





## Public Functions

|                | Name           |
| -------------- | -------------- |
| bool | **[OtherIsNewer](Classes/structllarp_1_1service_1_1IntroSet.md#function-otherisnewer)**(const [IntroSet](Classes/structllarp_1_1service_1_1IntroSet.md) & other) const |
| std::string | **[ToString](Classes/structllarp_1_1service_1_1IntroSet.md#function-tostring)**() const |
| llarp_time_t | **[GetNewestIntroExpiration](Classes/structllarp_1_1service_1_1IntroSet.md#function-getnewestintroexpiration)**() const |
| bool | **[GetNewestIntro](Classes/structllarp_1_1service_1_1IntroSet.md#function-getnewestintro)**([Introduction](Classes/structllarp_1_1service_1_1Introduction.md) & intro) const |
| bool | **[HasExpiredIntros](Classes/structllarp_1_1service_1_1IntroSet.md#function-hasexpiredintros)**(llarp_time_t now) const |
| bool | **[HasStaleIntros](Classes/structllarp_1_1service_1_1IntroSet.md#function-hasstaleintros)**(llarp_time_t now, llarp_time_t delta) const<br>return true if any of our intros expires soon given a delta  |
| bool | **[IsExpired](Classes/structllarp_1_1service_1_1IntroSet.md#function-isexpired)**(llarp_time_t now) const |
| std::vector< [llarp::dns::SRVData](Classes/structllarp_1_1dns_1_1SRVData.md) > | **[GetMatchingSRVRecords](Classes/structllarp_1_1service_1_1IntroSet.md#function-getmatchingsrvrecords)**(std::string_view service_proto) const |
| bool | **[BEncode](Classes/structllarp_1_1service_1_1IntroSet.md#function-bencode)**([llarp_buffer_t](Classes/structllarp__buffer__t.md) * buf) const |
| bool | **[BDecode](Classes/structllarp_1_1service_1_1IntroSet.md#function-bdecode)**([llarp_buffer_t](Classes/structllarp__buffer__t.md) * buf) |
| bool | **[DecodeKey](Classes/structllarp_1_1service_1_1IntroSet.md#function-decodekey)**(const [llarp_buffer_t](Classes/structllarp__buffer__t.md) & key, [llarp_buffer_t](Classes/structllarp__buffer__t.md) * buf) |
| bool | **[Verify](Classes/structllarp_1_1service_1_1IntroSet.md#function-verify)**(llarp_time_t now) const |
| util::StatusObject | **[ExtractStatus](Classes/structllarp_1_1service_1_1IntroSet.md#function-extractstatus)**() const |

## Public Attributes

|                | Name           |
| -------------- | -------------- |
| [ServiceInfo](Classes/structllarp_1_1service_1_1ServiceInfo.md) | **[addressKeys](Classes/structllarp_1_1service_1_1IntroSet.md#variable-addresskeys)**  |
| std::vector< [Introduction](Classes/structllarp_1_1service_1_1Introduction.md) > | **[intros](Classes/structllarp_1_1service_1_1IntroSet.md#variable-intros)**  |
| [PQPubKey](Classes/structllarp_1_1AlignedBuffer.md) | **[sntrupKey](Classes/structllarp_1_1service_1_1IntroSet.md#variable-sntrupkey)**  |
| [Tag](Classes/structllarp_1_1service_1_1Tag.md) | **[topic](Classes/structllarp_1_1service_1_1IntroSet.md#variable-topic)**  |
| std::vector< llarp::dns::SRVTuple > | **[SRVs](Classes/structllarp_1_1service_1_1IntroSet.md#variable-srvs)**  |
| llarp_time_t | **[timestampSignedAt](Classes/structllarp_1_1service_1_1IntroSet.md#variable-timestampsignedat)**  |
| std::vector< ProtocolType > | **[supportedProtocols](Classes/structllarp_1_1service_1_1IntroSet.md#variable-supportedprotocols)** <br>ethertypes we advertise that we speak  |
| std::set< [IPRange](Classes/structllarp_1_1IPRange.md) > | **[ownedRanges](Classes/structllarp_1_1service_1_1IntroSet.md#variable-ownedranges)** <br>aonnuce that these ranges are reachable via our endpoint only set when we support exit traffic ethertype is supported  |
| std::optional< [net::TrafficPolicy](Classes/structllarp_1_1net_1_1TrafficPolicy.md) > | **[exitTrafficPolicy](Classes/structllarp_1_1service_1_1IntroSet.md#variable-exittrafficpolicy)** <br>policies about traffic that we are willing to carry a protocol/range whitelist or blacklist only set when we support exit traffic ethertype  |
| [Signature](Classes/structllarp_1_1Signature.md) | **[signature](Classes/structllarp_1_1service_1_1IntroSet.md#variable-signature)**  |
| uint64_t | **[version](Classes/structllarp_1_1service_1_1IntroSet.md#variable-version)**  |

## Public Functions Documentation

### function OtherIsNewer

```cpp
inline bool OtherIsNewer(
    const IntroSet & other
) const
```


### function ToString

```cpp
std::string ToString() const
```


### function GetNewestIntroExpiration

```cpp
llarp_time_t GetNewestIntroExpiration() const
```


### function GetNewestIntro

```cpp
bool GetNewestIntro(
    Introduction & intro
) const
```


### function HasExpiredIntros

```cpp
bool HasExpiredIntros(
    llarp_time_t now
) const
```


### function HasStaleIntros

```cpp
bool HasStaleIntros(
    llarp_time_t now,
    llarp_time_t delta
) const
```

return true if any of our intros expires soon given a delta 

### function IsExpired

```cpp
bool IsExpired(
    llarp_time_t now
) const
```


### function GetMatchingSRVRecords

```cpp
std::vector< llarp::dns::SRVData > GetMatchingSRVRecords(
    std::string_view service_proto
) const
```


### function BEncode

```cpp
bool BEncode(
    llarp_buffer_t * buf
) const
```


### function BDecode

```cpp
inline bool BDecode(
    llarp_buffer_t * buf
)
```


### function DecodeKey

```cpp
bool DecodeKey(
    const llarp_buffer_t & key,
    llarp_buffer_t * buf
)
```


### function Verify

```cpp
bool Verify(
    llarp_time_t now
) const
```


### function ExtractStatus

```cpp
util::StatusObject ExtractStatus() const
```


## Public Attributes Documentation

### variable addressKeys

```cpp
ServiceInfo addressKeys;
```


### variable intros

```cpp
std::vector< Introduction > intros;
```


### variable sntrupKey

```cpp
PQPubKey sntrupKey;
```


### variable topic

```cpp
Tag topic;
```


### variable SRVs

```cpp
std::vector< llarp::dns::SRVTuple > SRVs;
```


### variable timestampSignedAt

```cpp
llarp_time_t timestampSignedAt = 0s;
```


### variable supportedProtocols

```cpp
std::vector< ProtocolType > supportedProtocols;
```

ethertypes we advertise that we speak 

### variable ownedRanges

```cpp
std::set< IPRange > ownedRanges;
```

aonnuce that these ranges are reachable via our endpoint only set when we support exit traffic ethertype is supported 

### variable exitTrafficPolicy

```cpp
std::optional< net::TrafficPolicy > exitTrafficPolicy;
```

policies about traffic that we are willing to carry a protocol/range whitelist or blacklist only set when we support exit traffic ethertype 

### variable signature

```cpp
Signature signature;
```


### variable version

```cpp
uint64_t version = llarp::constants::proto_version;
```


-------------------------------

Updated on 2022-11-08 at 16:19:49 +0000