2 * Copyright (c) 1998-1999, Index Data.
3 * See the file LICENSE for details.
4 * Sebastian Hammer, Adam Dickmeiss
6 * $Log: yaz-socket-manager.h,v $
7 * Revision 1.1 1999-01-28 09:41:07 adam
12 #include <yaz-socket-observer.h>
14 /** Simple Socket Manager.
15 Implements a stand-alone simple model that uses select(2) to
16 observe socket events.
18 class Yaz_SocketManager : public IYazSocketObservable {
20 struct YazSocketEntry {
21 IYazSocketObserver *observer;
27 YazSocketEntry *m_observers; // all registered observers
28 struct YazSocketEvent {
29 IYazSocketObserver *observer;
31 YazSocketEvent *next; // front in queue
32 YazSocketEvent *prev; // back in queue
34 YazSocketEvent *m_queue_front;
35 YazSocketEvent *m_queue_back;
37 YazSocketEntry **Yaz_SocketManager::lookupObserver
38 (IYazSocketObserver *observer);
39 YazSocketEvent *Yaz_SocketManager::getEvent();
40 void putEvent(YazSocketEvent *event);
41 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();