// Copyright 2019 The Chromium OS 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 SMBFS_FUSE_SESSION_H_
#define SMBFS_FUSE_SESSION_H_

#include <fuse_lowlevel.h>

#include <memory>
#include <vector>

#include <base/callback.h>
#include <base/files/file_descriptor_watcher_posix.h>
#include <base/macros.h>
#include <base/sequence_checker.h>

namespace smbfs {

class Filesystem;

class FuseSession {
 public:
  FuseSession(std::unique_ptr<Filesystem> fs, fuse_chan* chan);
  FuseSession(const FuseSession&) = delete;
  FuseSession& operator=(const FuseSession&) = delete;

  ~FuseSession();

  // Start processing FUSE requests. |stop_callback| is run if the filesystem is
  // disconnected by the kernel.
  bool Start(base::OnceClosure stop_callback);

 private:
  class Impl;

  // Callback for channel FD read watcher.
  void OnChannelReadable();

  // Stops processing FUSE requests and runs the |stop_callback_| provided by
  // Start(). May be be called multiple times, but will only run
  // |stop_callback_| on the first call.
  void RequestStop();

  std::unique_ptr<Impl> impl_;
  fuse_chan* const chan_;
  fuse_session* session_ = nullptr;
  std::unique_ptr<base::FileDescriptorWatcher::Controller> read_watcher_;
  base::OnceClosure stop_callback_;

  // Buffer used for reading and processing fuse requests.
  std::vector<char> read_buffer_;

  base::SequenceChecker sequence_checker_;
};

}  // namespace smbfs

#endif  // SMBFS_FUSE_SESSION_H_
