mirror of
https://github.com/debauchee/barrier.git
synced 2024-12-29 14:12:37 +03:00
848aee7a3a
event loop model. Streams, stream filters, and sockets are converted. Client proxies are almost converted. CServer is in progress. Removed all HTTP code. Haven't converted the necessary win32 arch stuff.
76 lines
2.0 KiB
C++
76 lines
2.0 KiB
C++
/*
|
|
* synergy -- mouse and keyboard sharing utility
|
|
* Copyright (C) 2004 Chris Schoeneman
|
|
*
|
|
* This package is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* found in the file COPYING that should have accompanied this file.
|
|
*
|
|
* This package is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*/
|
|
|
|
#ifndef ISOCKETMULTIPLEXERJOB_H
|
|
#define ISOCKETMULTIPLEXERJOB_H
|
|
|
|
#include "IArchNetwork.h"
|
|
#include "IInterface.h"
|
|
|
|
//! Socket multiplexer job
|
|
/*!
|
|
A socket multiplexer job handles events on a socket.
|
|
*/
|
|
class ISocketMultiplexerJob : public IInterface {
|
|
public:
|
|
//! @name manipulators
|
|
//@{
|
|
|
|
//! Handle socket event
|
|
/*!
|
|
Called by a socket multiplexer when the socket becomes readable,
|
|
writable, or has an error. It should return itself if the same
|
|
job can continue to service events, a new job if the socket must
|
|
be serviced differently, or NULL if the socket should no longer
|
|
be serviced. The socket is readable if \p readable is true,
|
|
writable if \p writable is true, and in error if \p error is
|
|
true.
|
|
|
|
This call must not attempt to directly change the job for this
|
|
socket by calling \c addSocket() or \c removeSocket() on the
|
|
multiplexer. It must instead return the new job. It can,
|
|
however, add or remove jobs for other sockets.
|
|
*/
|
|
virtual ISocketMultiplexerJob*
|
|
run(bool readable, bool writable, bool error) = 0;
|
|
|
|
//@}
|
|
//! @name accessors
|
|
//@{
|
|
|
|
//! Get the socket
|
|
/*!
|
|
Return the socket to multiplex
|
|
*/
|
|
virtual CArchSocket getSocket() const = 0;
|
|
|
|
//! Check for interest in readability
|
|
/*!
|
|
Return true if the job is interested in being run if the socket
|
|
becomes readable.
|
|
*/
|
|
virtual bool isReadable() const = 0;
|
|
|
|
//! Check for interest in writability
|
|
/*!
|
|
Return true if the job is interested in being run if the socket
|
|
becomes writable.
|
|
*/
|
|
virtual bool isWritable() const = 0;
|
|
|
|
//@}
|
|
};
|
|
|
|
#endif
|