blob: 678826d3840905f2d99ac8ccee4da599d8616692 [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.
#ifndef MOJO_SERVICES_FLOG_FLOG_SERVICE_IMPL_H_
#define MOJO_SERVICES_FLOG_FLOG_SERVICE_IMPL_H_
#include <map>
#include <memory>
#include "mojo/common/binding_set.h"
#include "mojo/services/flog/interfaces/flog.mojom.h"
#include "services/flog/flog_directory.h"
#include "services/util/cpp/factory_service_base.h"
#include "services/util/cpp/incident.h"
namespace mojo {
namespace flog {
// FlogService implementation.
class FlogServiceImpl : public util::FactoryServiceBase, public FlogService {
public:
FlogServiceImpl();
~FlogServiceImpl() override;
// ApplicationImplBase overrides.
void OnInitialize() override;
bool OnAcceptConnection(ServiceProviderImpl* service_provider_impl) override;
// FlogService implementation.
void CreateLogger(InterfaceRequest<FlogLogger> logger,
const String& label) override;
void GetLogDescriptions(const GetLogDescriptionsCallback& callback) override;
void CreateReader(InterfaceRequest<FlogReader> reader,
uint32_t log_id) override;
private:
Incident ready_;
BindingSet<FlogService> bindings_;
uint32_t last_allocated_log_id_ = 0;
std::unique_ptr<std::map<uint32_t, std::string>> log_labels_by_id_;
std::shared_ptr<FlogDirectory> directory_;
};
} // namespace flog
} // namespace mojo
#endif // MOJO_SERVICES_FLOG_FLOG_SERVICE_IMPL_H_