#ifndef MOJO_PUBLIC_CPP_BINDINGS_PIPE_CONTROL_MESSAGE_HANDLER_H_
#define MOJO_PUBLIC_CPP_BINDINGS_PIPE_CONTROL_MESSAGE_HANDLER_H_
#include <string>
#include "base/compiler_specific.h"
#include "base/component_export.h"
#include "base/memory/raw_ptr.h"
#include "mojo/public/cpp/bindings/message.h"
namespace mojo {
class PipeControlMessageHandlerDelegate;
class COMPONENT_EXPORT(MOJO_CPP_BINDINGS) PipeControlMessageHandler
: public MessageReceiver {
public:
explicit PipeControlMessageHandler(
PipeControlMessageHandlerDelegate* delegate);
PipeControlMessageHandler(const PipeControlMessageHandler&) = delete;
PipeControlMessageHandler& operator=(const PipeControlMessageHandler&) =
delete;
~PipeControlMessageHandler() override;
void SetDescription(const std::string& description);
static bool IsPipeControlMessage(const Message* message);
static std::optional<InterfaceId> IsPeerAssociatedEndpointClosedEvent(
const Message& message);
bool Accept(Message* message) override;
private:
bool Validate(Message* message);
bool RunOrClosePipe(Message* message);
std::string description_;
const raw_ptr<PipeControlMessageHandlerDelegate> delegate_;
};
}
#endif