2 * Copyright (c) 1998-2005, Index Data.
3 * See the file LICENSE for details.
5 * $Id: socket-manager.h,v 1.1 2006-03-29 13:14:15 adam Exp $
8 #ifndef YAZ_SOCKET_MANAGER_INCLUDED
9 #define YAZ_SOCKET_MANAGER_INCLUDED
11 #include <yazpp/socket-observer.h>
16 /** Simple Socket Manager.
17 Implements a stand-alone simple model that uses select(2) to
18 observe socket events.
20 class YAZ_EXPORT SocketManager : public ISocketObservable {
23 ISocketObserver *observer;
31 SocketEntry *m_observers; // all registered observers
33 ISocketObserver *observer;
35 SocketEvent *next; // front in queue
36 SocketEvent *prev; // back in queue
38 SocketEvent *m_queue_front;
39 SocketEvent *m_queue_back;
41 SocketEntry **lookupObserver
42 (ISocketObserver *observer);
43 SocketEvent *getEvent();
44 void putEvent(SocketEvent *event);
45 void removeEvent(ISocketObserver *observer);
49 virtual void addObserver(int fd, ISocketObserver *observer);
50 /// Delete an observer
51 virtual void deleteObserver(ISocketObserver *observer);
52 /// Delete all observers
53 virtual void deleteObservers();
54 /// Set event mask for observer
55 virtual void maskObserver(ISocketObserver *observer, int mask);
57 virtual void timeoutObserver(ISocketObserver *observer,
59 /// Process one event. return > 0 if event could be processed;
62 virtual ~SocketManager();
71 * indent-tabs-mode: nil
73 * vim: shiftwidth=4 tabstop=8 expandtab