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>
17 /** Simple Socket Manager.
18 Implements a stand-alone simple model that uses select(2) to
19 observe socket events.
21 class YAZ_EXPORT SocketManager : public ISocketObservable {
24 ISocketObserver *observer;
32 SocketEntry *m_observers; // all registered observers
34 ISocketObserver *observer;
36 SocketEvent *next; // front in queue
37 SocketEvent *prev; // back in queue
39 SocketEvent *m_queue_front;
40 SocketEvent *m_queue_back;
42 SocketEntry **lookupObserver
43 (ISocketObserver *observer);
44 SocketEvent *getEvent();
45 void putEvent(SocketEvent *event);
46 void removeEvent(ISocketObserver *observer);
48 void inspect_poll_result(int res, struct yaz_poll_fd *fds, int no_fds,
52 virtual void addObserver(int fd, ISocketObserver *observer);
53 /// Delete an observer
54 virtual void deleteObserver(ISocketObserver *observer);
55 /// Delete all observers
56 virtual void deleteObservers();
57 /// Set event mask for observer
58 virtual void maskObserver(ISocketObserver *observer, int mask);
60 virtual void timeoutObserver(ISocketObserver *observer,
62 /// Process one event. return > 0 if event could be processed;
65 virtual ~SocketManager();
74 * indent-tabs-mode: nil
76 * vim: shiftwidth=4 tabstop=8 expandtab