mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
69 lines
2.0 KiB
C++
69 lines
2.0 KiB
C++
// Copyright 2013 The Chromium Authors. All rights reserved.
|
|
// 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_MESSAGE_BUILDER_H_
|
|
#define MOJO_PUBLIC_CPP_BINDINGS_LIB_MESSAGE_BUILDER_H_
|
|
|
|
#include <stdint.h>
|
|
|
|
#include "mojo/public/cpp/bindings/lib/fixed_buffer.h"
|
|
#include "mojo/public/cpp/bindings/lib/message_internal.h"
|
|
|
|
namespace mojo {
|
|
class Message;
|
|
|
|
namespace internal {
|
|
|
|
class MessageBuilder {
|
|
public:
|
|
MessageBuilder(uint32_t name, size_t payload_size);
|
|
~MessageBuilder();
|
|
|
|
Buffer* buffer() { return &buf_; }
|
|
|
|
// Call Finish when done making allocations in |buffer()|. Upon return,
|
|
// |message| will contain the message data, and |buffer()| will no longer be
|
|
// valid to reference.
|
|
void Finish(Message* message);
|
|
|
|
protected:
|
|
explicit MessageBuilder(size_t size);
|
|
FixedBuffer buf_;
|
|
|
|
MOJO_DISALLOW_COPY_AND_ASSIGN(MessageBuilder);
|
|
};
|
|
|
|
class MessageWithRequestIDBuilder : public MessageBuilder {
|
|
public:
|
|
MessageWithRequestIDBuilder(uint32_t name,
|
|
size_t payload_size,
|
|
uint32_t flags,
|
|
uint64_t request_id);
|
|
};
|
|
|
|
class RequestMessageBuilder : public MessageWithRequestIDBuilder {
|
|
public:
|
|
RequestMessageBuilder(uint32_t name, size_t payload_size)
|
|
: MessageWithRequestIDBuilder(name,
|
|
payload_size,
|
|
kMessageExpectsResponse,
|
|
0) {}
|
|
};
|
|
|
|
class ResponseMessageBuilder : public MessageWithRequestIDBuilder {
|
|
public:
|
|
ResponseMessageBuilder(uint32_t name,
|
|
size_t payload_size,
|
|
uint64_t request_id)
|
|
: MessageWithRequestIDBuilder(name,
|
|
payload_size,
|
|
kMessageIsResponse,
|
|
request_id) {}
|
|
};
|
|
|
|
} // namespace internal
|
|
} // namespace mojo
|
|
|
|
#endif // MOJO_PUBLIC_CPP_BINDINGS_LIB_MESSAGE_BUILDER_H_
|