2 * Copyright (c) 1998-2000, Index Data.
3 * See the file LICENSE for details.
5 * $Id: yaz-socket-manager.h,v 1.6 2000-09-08 10:23:42 adam Exp $
8 #include <yaz-socket-observer.h>
11 /** Simple Socket Manager.
12 Implements a stand-alone simple model that uses select(2) to
13 observe socket events.
15 class YAZ_EXPORT Yaz_SocketManager : public IYazSocketObservable {
17 struct YazSocketEntry {
18 IYazSocketObserver *observer;
25 YazSocketEntry *m_observers; // all registered observers
26 struct YazSocketEvent {
27 IYazSocketObserver *observer;
29 YazSocketEvent *next; // front in queue
30 YazSocketEvent *prev; // back in queue
32 YazSocketEvent *m_queue_front;
33 YazSocketEvent *m_queue_back;
35 YazSocketEntry **Yaz_SocketManager::lookupObserver
36 (IYazSocketObserver *observer);
37 YazSocketEvent *Yaz_SocketManager::getEvent();
38 void putEvent(YazSocketEvent *event);
39 void removeEvent(IYazSocketObserver *observer);
43 virtual void addObserver(int fd, IYazSocketObserver *observer);
44 /// Delete an observer
45 virtual void deleteObserver(IYazSocketObserver *observer);
46 /// Delete all observers
47 virtual void deleteObservers();
48 /// Set event mask for observer
49 virtual void maskObserver(IYazSocketObserver *observer, int mask);
51 virtual void timeoutObserver(IYazSocketObserver *observer,
53 /// Process one event. return > 0 if event could be processed;
54 int Yaz_SocketManager::processEvent();
56 virtual ~Yaz_SocketManager();