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.2 1999-02-02 14:01:16 adam
8 * First WIN32 port of YAZ++.
10 * Revision 1.1.1.1 1999/01/28 09:41:07 adam
11 * First implementation of YAZ++.
15 #include <yaz-socket-observer.h>
17 /** Simple Socket Manager.
18 Implements a stand-alone simple model that uses select(2) to
19 observe socket events.
21 class YAZ_EXPORT Yaz_SocketManager : public IYazSocketObservable {
23 struct YazSocketEntry {
24 IYazSocketObserver *observer;
30 YazSocketEntry *m_observers; // all registered observers
31 struct YazSocketEvent {
32 IYazSocketObserver *observer;
34 YazSocketEvent *next; // front in queue
35 YazSocketEvent *prev; // back in queue
37 YazSocketEvent *m_queue_front;
38 YazSocketEvent *m_queue_back;
40 YazSocketEntry **Yaz_SocketManager::lookupObserver
41 (IYazSocketObserver *observer);
42 YazSocketEvent *Yaz_SocketManager::getEvent();
43 void putEvent(YazSocketEvent *event);
44 void removeEvent(IYazSocketObserver *observer);
47 virtual void addObserver(int fd, IYazSocketObserver *observer);
48 /// Delete an observer
49 virtual void deleteObserver(IYazSocketObserver *observer);
50 /// Delete all observers
51 virtual void deleteObservers();
52 /// Set event mask for observer
53 virtual void maskObserver(IYazSocketObserver *observer, int mask);
55 virtual void timeoutObserver(IYazSocketObserver *observer,
57 /// Process one event. return > 0 if event could be processed;
58 int Yaz_SocketManager::processEvent();
60 virtual ~Yaz_SocketManager();