blob: d31466299e69fada62943884b8865b427ff555d7 [file] [log] [blame]
// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef MOJO_PUBLIC_CPP_BINDINGS_LIB_PENDING_REMOTE_STATE_H_
#define MOJO_PUBLIC_CPP_BINDINGS_LIB_PENDING_REMOTE_STATE_H_
#include <stdint.h>
#include "base/component_export.h"
#include "mojo/public/cpp/bindings/connection_group.h"
#include "mojo/public/cpp/system/message_pipe.h"
namespace mojo {
namespace internal {
// Generic state owned by every templated InterfacePtrInfo or PendingRemote
// instance.
struct COMPONENT_EXPORT(MOJO_CPP_BINDINGS_BASE) PendingRemoteState {
public:
PendingRemoteState();
PendingRemoteState(ScopedMessagePipeHandle pipe, uint32_t version);
PendingRemoteState(const PendingRemoteState&) = delete;
PendingRemoteState(PendingRemoteState&&) noexcept;
~PendingRemoteState();
PendingRemoteState& operator=(const PendingRemoteState&) = delete;
PendingRemoteState& operator=(PendingRemoteState&&) noexcept;
void reset();
ScopedMessagePipeHandle pipe;
uint32_t version = 0;
};
} // namespace internal
} // namespace mojo
#endif // MOJO_PUBLIC_CPP_BINDINGS_LIB_PENDING_REMOTE_STATE_H_