blob: 0c6f17138c9d74f583127038991eb36049ed3ef2 [file] [log] [blame]
// Copyright 2016 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.
[DartPackage="mojo_services"]
module mojo.flog;
// TODO(dalesat): Move out of media to somewhere more generic.
// Exposed by the log service to enable creation and consumption of logs.
[ServiceName="mojo::flog::FlogService"]
interface FlogService {
// Creates a new logger.
CreateLogger(FlogLogger& logger, string label);
// Gets the descriptions of all logs.
GetLogDescriptions() => (array<FlogDescription> descriptions);
// Gets a reader for the specified log.
CreateReader(FlogReader& reader, uint32 log_id);
};
// A logger that logs messages regarding multiple channels.
interface FlogLogger {
// Logs the creation of a channel.
LogChannelCreation(int64 time_us, uint32 channel_id, string type_name);
// Logs a message sent to an existing channel.
LogChannelMessage(int64 time_us, uint32 channel_id, array<uint8> data);
// Logs the deletion of a channel.
LogChannelDeletion(int64 time_us, uint32 channel_id);
};
// A reader that reads messages from one or more logs.
interface FlogReader {
// Gets entries from the log starting and the specified index (entries are
// indexed starting at 0). If the log is open, the callback will be called
// when max_count entries are avaiable starting at start_index. If the log
// is closed, the callback will be called immediately with as many entries
// as are available starting at start_index and not exceeding max_count
// entries. entry_count and open refer to the entire log at the time the
// callback occurred.
GetEntries(uint32 start_index, uint32 max_count) =>
(array<FlogEntry> entries, uint32 entry_count, bool open);
};
struct FlogDescription {
string label;
uint32 log_id;
uint32 entry_count;
int64 start_time_us;
int64 stop_time_us;
bool open;
};
struct FlogEntry {
int64 time_us;
uint32 log_id;
uint32 channel_id;
FlogEntryDetails? details;
};
union FlogEntryDetails {
FlogChannelCreationEntryDetails channel_creation;
FlogChannelMessageEntryDetails channel_message;
};
struct FlogChannelCreationEntryDetails {
string type_name;
};
struct FlogChannelMessageEntryDetails {
array<uint8> data;
};