---
title: llarp/routing/message_parser.hpp

---

# llarp/routing/message_parser.hpp



## Namespaces

| Name           |
| -------------- |
| **[llarp](Namespaces/namespacellarp.md)** <br>[crypto.hpp] |
| **[llarp::routing](Namespaces/namespacellarp_1_1routing.md)**  |

## Classes

|                | Name           |
| -------------- | -------------- |
| struct | **[llarp::routing::InboundMessageParser](Classes/structllarp_1_1routing_1_1InboundMessageParser.md)**  |




## Source code

```cpp
#pragma once

#include <llarp/util/bencode.h>
#include <llarp/util/buffer.hpp>

#include <memory>

namespace llarp
{
  struct AbstractRouter;
  struct PathID_t;

  namespace routing
  {
    struct IMessage;
    struct IMessageHandler;

    struct InboundMessageParser
    {
      InboundMessageParser();
      ~InboundMessageParser();

      bool
      ParseMessageBuffer(
          const llarp_buffer_t& buf,
          IMessageHandler* handler,
          const PathID_t& from,
          AbstractRouter* r);

      bool
      operator()(llarp_buffer_t* buffer, llarp_buffer_t* key);

     private:
      uint64_t version = 0;
      bool firstKey{false};
      char ourKey{'\0'};
      struct MessageHolder;

      IMessage* msg{nullptr};
      std::unique_ptr<MessageHolder> m_Holder;
    };
  }  // namespace routing
}  // namespace llarp
```


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

Updated on 2024-11-10 at 05:10:02 +0000
