Bug 974410: Added watcher classes for Unix file descriptors, r=kyle

These new classes encasulate file-descriptor watchers, basic file
descriptors, and socket connections. Each class contains callback
methods for it's implemented functionality. Users should inherit
from the classes and overload the callback with their own code.
This commit is contained in:
Thomas Zimmermann
2014-02-26 17:51:52 +01:00
parent 83084a8812
commit b9f868744e
8 changed files with 499 additions and 2 deletions

View File

@@ -0,0 +1,44 @@
/* -*- Mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; tab-width: 40 -*- */
/* vim: set ts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include <fcntl.h>
#include "UnixFileWatcher.h"
namespace mozilla {
namespace ipc {
UnixFileWatcher::~UnixFileWatcher()
{
}
nsresult
UnixFileWatcher::Open(const char* aFilename, int aFlags, mode_t aMode)
{
MOZ_ASSERT(MessageLoopForIO::current() == GetIOLoop());
int fd = TEMP_FAILURE_RETRY(open(aFilename, aFlags, aMode));
if (fd < 0) {
OnError("open", errno);
return NS_ERROR_FAILURE;
}
SetFd(fd);
OnOpened();
return NS_OK;
}
UnixFileWatcher::UnixFileWatcher(MessageLoop* aIOLoop)
: UnixFdWatcher(aIOLoop)
{
}
UnixFileWatcher::UnixFileWatcher(MessageLoop* aIOLoop, int aFd)
: UnixFdWatcher(aIOLoop, aFd)
{
}
}
}