Async 1.8.0
Async::FdWatch Class Reference

A class for watching file descriptors. More...

#include <AsyncFdWatch.h>

Inheritance diagram for Async::FdWatch:

Public Types

enum  FdWatchType { FD_WATCH_RD , FD_WATCH_WR }
 The type of the file descriptor watch. More...
 

Public Member Functions

 FdWatch (void)
 Default constructor.
 
 FdWatch (int fd, FdWatchType type)
 Constructor.
 
 ~FdWatch (void)
 Destructor.
 
FdWatchoperator= (FdWatch &&other)
 Assignment move operator.
 
int fd (void) const
 Return the file descriptor being watched.
 
FdWatchType type (void) const
 Return the type of this watch.
 
void setEnabled (bool enabled)
 Enable or disable the watch.
 
bool isEnabled (void) const
 Check if the watch is enabled or not.
 
void setFd (int fd, FdWatchType type)
 Set the file descriptor to watch.
 

Public Attributes

sigc::signal< void, FdWatch * > activity
 Signal to indicate that the descriptor is active.
 

Detailed Description

A class for watching file descriptors.

Author
Tobias Blomberg
Date
2003-03-19

Use this class to watch a file descriptor for activity. The example below creates a read watch on the standard input file descriptor. That is, every time a character is typed on the keyboard (or something is piped to the application) the onActivity method in instance this of class MyClass will be called. In the handler function, the data on the file descriptor should be read. Otherwise the handler function will be called over and over again.

Note
Since the stdin is line buffered, the ENTER key has to be pressed before anything will be shown.
#include <unistd.h>
#include <cstdio>
#include <iostream>
#include <AsyncFdWatch.h>
using namespace std;
using namespace Async;
class MyClass : public sigc::trackable
{
public:
MyClass(void)
{
stdin_watch = new FdWatch(STDIN_FILENO, FdWatch::FD_WATCH_RD);
stdin_watch->activity.connect(mem_fun(*this, &MyClass::onActivity));
}
~MyClass(void)
{
delete stdin_watch;
}
private:
FdWatch *stdin_watch;
void onActivity(FdWatch *watch)
{
char buf[1024];
int cnt = read(watch->fd(), buf, sizeof(buf)-1);
if (cnt == -1)
{
perror("read");
Application::app().quit();
return;
}
buf[cnt] = 0;
cout << "Read from STDIN: " << buf << endl;
}
};
int main(int argc, char **argv)
{
MyClass my_class;
app.exec();
}
The core class for writing asyncronous cpp applications.
Contains a watch for file descriptors.
An application class for writing non GUI applications.
void exec(void)
Execute the application main loop.
A class for watching file descriptors.
int fd(void) const
Return the file descriptor being watched.
Namespace for the asynchronous programming classes.
Examples
AsyncFdWatch_demo.cpp.

Definition at line 119 of file AsyncFdWatch.h.

Member Enumeration Documentation

◆ FdWatchType

The type of the file descriptor watch.

Enumerator
FD_WATCH_RD 

File descriptor watch for incoming data.

FD_WATCH_WR 

File descriptor watch for outgoing data.

Definition at line 125 of file AsyncFdWatch.h.

Constructor & Destructor Documentation

◆ FdWatch() [1/2]

Async::FdWatch::FdWatch ( void )

Default constructor.

Create a disabled FdWatch. Use the setFd function to set the filedescriptor to watch and the type of watch.

◆ FdWatch() [2/2]

Async::FdWatch::FdWatch ( int fd,
FdWatchType type )

Constructor.

Add the given file descriptor to the watch list and watch it for incoming data (FD_WATCH_RD) or write buffer space available (FD_WATCH_WR).

Parameters
fdThe file descriptor to watch
typeThe type of watch to create (see FdWatchType)

◆ ~FdWatch()

Async::FdWatch::~FdWatch ( void )

Destructor.

Member Function Documentation

◆ fd()

int Async::FdWatch::fd ( void ) const
inline

Return the file descriptor being watched.

Returns
Returns the file descriptor
Examples
AsyncFdWatch_demo.cpp.

Definition at line 170 of file AsyncFdWatch.h.

◆ isEnabled()

bool Async::FdWatch::isEnabled ( void ) const
inline

Check if the watch is enabled or not.

Returns
Returns true if the watch is enabled, or else false.

Definition at line 189 of file AsyncFdWatch.h.

◆ operator=()

FdWatch & Async::FdWatch::operator= ( FdWatch && other)

Assignment move operator.

Parameters
otherThe object to move data from
Returns
Returns a reference to this object

The move operator move the state of a specified FdWatch object into this object. After the move, the state of the other object will be the same as if it had just been default constructed.

◆ setEnabled()

void Async::FdWatch::setEnabled ( bool enabled)

Enable or disable the watch.

Parameters
enabledSet to true to enable the watch or false to disable it.

◆ setFd()

void Async::FdWatch::setFd ( int fd,
FdWatchType type )

Set the file descriptor to watch.

Parameters
fdThe file descriptor to watch
typeThe type of watch to create (see FdWatchType)

This function can be used at any time to change the file descriptor or type of watch. If the watch was disabled it will stay disabled until explicitly being enabled. If fd < 0 the watch will be disabled if it was enabled.

◆ type()

FdWatchType Async::FdWatch::type ( void ) const
inline

Return the type of this watch.

Returns
Returns the type (see FdWatchType)

Definition at line 176 of file AsyncFdWatch.h.

Member Data Documentation

◆ activity

sigc::signal<void, FdWatch*> Async::FdWatch::activity

Signal to indicate that the descriptor is active.

Parameters
watchPointer to the watch object

Definition at line 207 of file AsyncFdWatch.h.


The documentation for this class was generated from the following file: