mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
51ec78121a
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.
63 lines
1.3 KiB
C++
63 lines
1.3 KiB
C++
/* -*- 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 "base/message_loop.h"
|
|
#include "mozilla/FileUtils.h"
|
|
|
|
namespace mozilla {
|
|
namespace ipc {
|
|
|
|
class UnixFdWatcher : public MessageLoopForIO::Watcher
|
|
{
|
|
public:
|
|
enum {
|
|
READ_WATCHER = 1<<0,
|
|
WRITE_WATCHER = 1<<1
|
|
};
|
|
|
|
virtual ~UnixFdWatcher();
|
|
|
|
MessageLoop* GetIOLoop() const
|
|
{
|
|
return mIOLoop;
|
|
}
|
|
|
|
int GetFd() const
|
|
{
|
|
return mFd;
|
|
}
|
|
|
|
bool IsOpen() const
|
|
{
|
|
return GetFd() >= 0;
|
|
}
|
|
|
|
virtual void Close();
|
|
|
|
void AddWatchers(unsigned long aWatchers, bool aPersistent);
|
|
void RemoveWatchers(unsigned long aWatchers);
|
|
|
|
// Callback method that's run before closing the file descriptor
|
|
virtual void OnClose() {};
|
|
|
|
// Callback method that's run on POSIX errors
|
|
virtual void OnError(const char* aFunction, int aErrno);
|
|
|
|
protected:
|
|
UnixFdWatcher(MessageLoop* aIOLoop);
|
|
UnixFdWatcher(MessageLoop* aIOLoop, int aFd);
|
|
void SetFd(int aFd);
|
|
|
|
private:
|
|
MessageLoop* mIOLoop;
|
|
ScopedClose mFd;
|
|
MessageLoopForIO::FileDescriptorWatcher mReadWatcher;
|
|
MessageLoopForIO::FileDescriptorWatcher mWriteWatcher;
|
|
};
|
|
|
|
}
|
|
}
|