sapling/eden/fs/fuse/privhelper/PrivHelperImpl.h
Adam Simpkins 129d87fe23 use the normal PrivHelper.h header file on Windows
Summary:
While EdenFS does not use a separate privhelper process on Windows, it still
defines a stub PrivHelper class.  However, this class was previously defined
in a separate win/utils/Stub.h header file, which led to awkward `#ifdef`s to
include the correct platform-specific header file.

This diff moves the definition of the dummy PrivHelper class in Windows into
the same `PrivHelper.h` header file used on POSIX platforms.  This results in
a few more `ifdef`s in the PrivHelper files, but fewer `ifdef`s in the calling
code, and will make it easier to start unifying more of the `EdenMain` logic
on Windows and non-Windows platforms.

Reviewed By: xavierd

Differential Revision: D21332568

fbshipit-source-id: c63bf2b4a8b7e767d7db7dcda28675f735c23bf8
2020-05-01 14:01:40 -07:00

55 lines
1.3 KiB
C++

/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This software may be used and distributed according to the terms of the
* GNU General Public License version 2.
*/
#pragma once
#include <memory>
namespace folly {
class File;
}
namespace facebook {
namespace eden {
class PrivHelperServer;
class UserInfo;
class PrivHelper;
/**
* Fork a separate privileged helper process, for performing mounts.
*
* This function should be very early on during program initialization, before
* any other threads are forked. After it is called UserInfo::dropPrivileges()
* should be called to return the desired user privileges.
*/
std::unique_ptr<PrivHelper> startPrivHelper(const UserInfo& userInfo);
#ifndef _WIN32
/**
* Start a privhelper process using a custom PrivHelperServer class.
*
* This is really only intended for use in unit tests.
*/
std::unique_ptr<PrivHelper> startPrivHelper(
PrivHelperServer* server,
const UserInfo& userInfo);
/**
* Create a PrivHelper client object using the specified connection rather than
* forking a new privhelper server process.
*
* This is primarily intended for use in unit tests.
*/
std::unique_ptr<PrivHelper> createTestPrivHelper(folly::File&& conn);
#endif // !_WIN32
} // namespace eden
} // namespace facebook