2 * Copyright (c) 1998-1999, Index Data.
3 * See the file LICENSE for details.
4 * Sebastian Hammer, Adam Dickmeiss
6 * $Id: yaz-socket-manager.h,v 1.5 1999-12-06 13:52:45 adam Exp $
9 #include <yaz-socket-observer.h>
12 /** Simple Socket Manager.
13 Implements a stand-alone simple model that uses select(2) to
14 observe socket events.
16 class YAZ_EXPORT Yaz_SocketManager : public IYazSocketObservable {
18 struct YazSocketEntry {
19 IYazSocketObserver *observer;
26 YazSocketEntry *m_observers; // all registered observers
27 struct YazSocketEvent {
28 IYazSocketObserver *observer;
30 YazSocketEvent *next; // front in queue
31 YazSocketEvent *prev; // back in queue
33 YazSocketEvent *m_queue_front;
34 YazSocketEvent *m_queue_back;
36 YazSocketEntry **Yaz_SocketManager::lookupObserver
37 (IYazSocketObserver *observer);
38 YazSocketEvent *Yaz_SocketManager::getEvent();
39 void putEvent(YazSocketEvent *event);
40 void removeEvent(IYazSocketObserver *observer);
44 virtual void addObserver(int fd, IYazSocketObserver *observer);
45 /// Delete an observer
46 virtual void deleteObserver(IYazSocketObserver *observer);
47 /// Delete all observers
48 virtual void deleteObservers();
49 /// Set event mask for observer
50 virtual void maskObserver(IYazSocketObserver *observer, int mask);
52 virtual void timeoutObserver(IYazSocketObserver *observer,
54 /// Process one event. return > 0 if event could be processed;
55 int Yaz_SocketManager::processEvent();
57 virtual ~Yaz_SocketManager();