blob: db8faffb4a99b86c04e9196a8e1e88c9d6812d36 [file] [log] [blame]
// Copyright (c) 2014 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 LOGIN_MANAGER_JOB_MANAGER_H_
#define LOGIN_MANAGER_JOB_MANAGER_H_
#include <signal.h>
#include <sys/types.h>
#include <base/time/time.h>
namespace login_manager {
// An interface for classes that manage background processes.
class JobManagerInterface {
public:
virtual ~JobManagerInterface() {}
// Check if |pid| is the currently-managed job.
virtual bool IsManagedJob(pid_t pid) = 0;
// The job managed by this object exited, with |status|.
virtual void HandleExit(const siginfo_t& status) = 0;
// Ask the managed job to exit.
virtual void RequestJobExit() = 0;
// The job must be destroyed within the timeout.
virtual void EnsureJobExit(base::TimeDelta timeout) = 0;
};
} // namespace login_manager
#endif // LOGIN_MANAGER_JOB_MANAGER_H_