---
title: llarp/layers/flow/flow_tag.hpp

---

# llarp/layers/flow/flow_tag.hpp



## Namespaces

| Name           |
| -------------- |
| **[llarp](Namespaces/namespacellarp.md)** <br>[crypto.hpp] |
| **[llarp::layers](Namespaces/namespacellarp_1_1layers.md)**  |
| **[llarp::layers::flow](Namespaces/namespacellarp_1_1layers_1_1flow.md)**  |
| **[std](Namespaces/namespacestd.md)** <br>STL namespace.  |

## Classes

|                | Name           |
| -------------- | -------------- |
| struct | **[llarp::layers::flow::FlowTag](Classes/structllarp_1_1layers_1_1flow_1_1FlowTag.md)** <br>a flow layer tag that indicates a distinct convo between us and other entity on the flow layer.  |
| struct | **[std::hash< llarp::layers::flow::FlowTag >](Classes/structstd_1_1hash_3_01llarp_1_1layers_1_1flow_1_1FlowTag_01_4.md)**  |




## Source code

```cpp
#pragma once

#include <llarp/util/aligned.hpp>
#include <llarp/util/formattable.hpp>

namespace llarp::layers::flow
{
  struct FlowTag : public AlignedBuffer<16>
  {
    using AlignedBuffer<16>::AlignedBuffer;

    std::string
    ToString() const;

    static FlowTag
    random();
  };
}  // namespace llarp::layers::flow

namespace llarp
{
  template <>
  inline constexpr bool IsToStringFormattable<llarp::layers::flow::FlowTag> = true;

}

namespace std
{
  template <>
  struct hash<llarp::layers::flow::FlowTag>
  {
    size_t
    operator()(const llarp::layers::flow::FlowTag& tag) const
    {
      return std::hash<llarp::AlignedBuffer<16>>{}(tag);
    }
  };
}  // namespace std
```


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

Updated on 2023-04-27 at 04:17:17 +0000
