Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1229)

Unified Diff: dbus/file_descriptor.h

Issue 2337893002: dbus: Remove dbus::FileDescriptor (Closed)
Patch Set: Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « dbus/BUILD.gn ('k') | dbus/file_descriptor.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: dbus/file_descriptor.h
diff --git a/dbus/file_descriptor.h b/dbus/file_descriptor.h
deleted file mode 100644
index f8e86777eafa870c75ec62d5df51f03ea753023e..0000000000000000000000000000000000000000
--- a/dbus/file_descriptor.h
+++ /dev/null
@@ -1,92 +0,0 @@
-// Copyright (c) 2012 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 DBUS_FILE_DESCRIPTOR_H_
-#define DBUS_FILE_DESCRIPTOR_H_
-
-#include <memory>
-
-#include "base/macros.h"
-#include "dbus/dbus_export.h"
-
-namespace dbus {
-
-// FileDescriptor is a type used to encapsulate D-Bus file descriptors
-// and to follow the RAII idiom appropiate for use with message operations
-// where the descriptor might be easily leaked. To guard against this the
-// descriptor is closed when an instance is destroyed if it is owned.
-// Ownership is asserted only when PutValue is used and TakeValue can be
-// used to take ownership.
-//
-// For example, in the following
-// FileDescriptor fd;
-// if (!reader->PopString(&name) ||
-// !reader->PopFileDescriptor(&fd) ||
-// !reader->PopUint32(&flags)) {
-// the descriptor in fd will be closed if the PopUint32 fails. But
-// writer.AppendFileDescriptor(dbus::FileDescriptor(1));
-// will not automatically close "1" because it is not owned.
-//
-// Descriptors must be validated before marshalling in a D-Bus message
-// or using them after unmarshalling. We disallow descriptors to a
-// directory to reduce the security risks. Splitting out validation
-// also allows the caller to do this work on the File thread to conform
-// with i/o restrictions.
-class CHROME_DBUS_EXPORT FileDescriptor {
- public:
- // This provides a simple way to pass around file descriptors since they must
- // be closed on a thread that is allowed to perform I/O.
- struct Deleter {
- void CHROME_DBUS_EXPORT operator()(FileDescriptor* fd);
- };
-
- // Permits initialization without a value for passing to
- // dbus::MessageReader::PopFileDescriptor to fill in and from int values.
- FileDescriptor() : value_(-1), owner_(false), valid_(false) {}
- explicit FileDescriptor(int value) : value_(value), owner_(false),
- valid_(false) {}
-
- FileDescriptor(FileDescriptor&& other);
-
- virtual ~FileDescriptor();
-
- FileDescriptor& operator=(FileDescriptor&& other);
-
- // Retrieves value as an int without affecting ownership.
- int value() const;
-
- // Retrieves whether or not the descriptor is ok to send/receive.
- int is_valid() const { return valid_; }
-
- // Sets the value and assign ownership.
- void PutValue(int value) {
- value_ = value;
- owner_ = true;
- valid_ = false;
- }
-
- // Takes the value and ownership.
- int TakeValue();
-
- // Checks (and records) validity of the file descriptor.
- // We disallow directories to avoid potential sandbox escapes.
- // Note this call must be made on a thread where file i/o is allowed.
- void CheckValidity();
-
- private:
- void Swap(FileDescriptor* other);
-
- int value_;
- bool owner_;
- bool valid_;
-
- DISALLOW_COPY_AND_ASSIGN(FileDescriptor);
-};
-
-using ScopedFileDescriptor =
- std::unique_ptr<FileDescriptor, FileDescriptor::Deleter>;
-
-} // namespace dbus
-
-#endif // DBUS_FILE_DESCRIPTOR_H_
« no previous file with comments | « dbus/BUILD.gn ('k') | dbus/file_descriptor.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698