blob: 4efb6e486a27f1b775c350a99f9adab9ac624f6d [file] [log] [blame]
// Copyright 2013 The Flutter 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 FLUTTER_FML_TASK_QUEUE_ID_H_
#define FLUTTER_FML_TASK_QUEUE_ID_H_
#include "flutter/fml/logging.h"
namespace fml {
/**
* `MessageLoopTaskQueues` task dispatcher's internal task queue identifier.
*/
class TaskQueueId {
public:
/// This constant indicates whether a task queue has been subsumed by a task
/// runner.
static const size_t kUnmerged;
/// This constant indicates an invalid task queue. Used in embedder
/// supplied task runners not associated with a task queue.
static const size_t kInvalid;
/// Intializes a task queue with the given value as it's ID.
explicit TaskQueueId(size_t value) : value_(value) {}
static TaskQueueId Invalid() { return TaskQueueId(kInvalid); }
operator size_t() const { // NOLINT(google-explicit-constructor)
return value_;
}
bool is_valid() const { return value_ != kInvalid; }
private:
size_t value_ = kUnmerged;
};
} // namespace fml
#endif // FLUTTER_FML_TASK_QUEUE_ID_H_