summaryrefslogtreecommitdiffstats
path: root/base/file_descriptor_posix.h
diff options
context:
space:
mode:
authoragl@chromium.org <agl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-03-05 21:40:11 +0000
committeragl@chromium.org <agl@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-03-05 21:40:11 +0000
commit2749885f65019b0216f5c0401d0f5a28585eb83f (patch)
tree166a5090004f63ae435e434d711e2ce335909851 /base/file_descriptor_posix.h
parent06533c0b11ce14b45eb0205fdc28a217eeba763c (diff)
downloadchromium_src-2749885f65019b0216f5c0401d0f5a28585eb83f.zip
chromium_src-2749885f65019b0216f5c0401d0f5a28585eb83f.tar.gz
chromium_src-2749885f65019b0216f5c0401d0f5a28585eb83f.tar.bz2
POSIX: Rewrite IPC's interaction with FileDescriptor
The FileDescriptor API is clearly too hard to use. It's the only IPC data type which is non-POD and serialising an invalid file descriptor is fatal to Chrome on POSIX. The use of Maybe is possibly non-obvious to non-functional programmers. This patch merges Maybe and FileDescriptor so that serialising invalid file descriptors is permitted and results in -1 at the other end. (Serialising /closed/ a file descriptor is still fatal.) Also, it adds a pointer in base/file_descriptor.h to instructions for its use with IPC. Although it's generally bad practice to mention IPC in base, in this case I cannot find another suitable location. Review URL: http://codereview.chromium.org/39208 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@11041 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/file_descriptor_posix.h')
-rw-r--r--base/file_descriptor_posix.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/base/file_descriptor_posix.h b/base/file_descriptor_posix.h
index 8ebc5be..0bcd4b6 100644
--- a/base/file_descriptor_posix.h
+++ b/base/file_descriptor_posix.h
@@ -10,6 +10,10 @@ namespace base {
// -----------------------------------------------------------------------------
// We introduct a special structure for file descriptors in order that we are
// able to use template specialisation to special-case their handling.
+//
+// WARNING: (Chromium only) There are subtleties to consider if serialising
+// these objects over IPC. See comments in chrome/common/ipc_message_utils.h
+// above the template specialisation for this structure.
// -----------------------------------------------------------------------------
struct FileDescriptor {
FileDescriptor()