Table of Contents
The YAZ C++ API is a client and server API that exposes all YAZ features. The API doesn't hide YAZ C data structures, but provides a set of useful high-level objects for creating clients and servers.
All definitions from YAZ++ are part of namespace
yazpp_1
.
The following sections include a short description of the interfaces and implementations (concrete classes).
In order to understand the structure, you should look at the
example client yaz-my-client.cpp
and
the example server yaz-my-server.cpp
.
If that is too easy, you can always turn to the implementation
of the proxy itself and send us a patch if you implement a new
useful feature.
The documentation here is very limited. We plan to enhance it - provided there is interest for it.
This interface is capable of observing sockets. When a socket event occurs, it invokes an object implementing the ISocketObserver interface.
#include <yazpp/socket-observer.h> class my_socketobservable : public ISocketObservable { // Add an observer interested in socket fd virtual void addObserver(int fd, ISocketObserver *observer) = 0; // Delete an observer virtual void deleteObserver(ISocketObserver *observer) = 0; // Delete all observers virtual void deleteObservers() = 0; // Specify the events that the observer is interested in. virtual void maskObserver(ISocketObserver *observer, int mask) = 0; // Specify timeout virtual void timeoutObserver(ISocketObserver *observer, int timeout)=0; };
This interface is interested in socket events supporting the ISocketObservable interface.
#include <yazpp/socket-observer.h> class my_socketobserver : public ISocketObserver { public: // Notify the observer that something happened to socket virtual void socketNotify(int event) = 0; }
This interface is responsible for sending and receiving PDUs over the network (YAZ COMSTACK). When events occur, an instance implementing IPDU_Observer is notified.
#include <yazpp/pdu-observer.h> class my_pduobservable : public IPDU_Observable { public: // Send encoded PDU buffer of specified length virtual int send_PDU(const char *buf, int len) = 0; // Connect with server specified by addr. virtual void connect(IPDU_Observer *observer, const char *addr) = 0; // Listen on address addr. virtual void listen(IPDU_Observer *observer, const char *addr)=0; // Close connection virtual void close() = 0; // Make clone of this object using this interface virtual IPDU_Observable *clone() = 0; // Destroy completely virtual void destroy() = 0; // Set Idle Time virtual void idleTime (int timeout) = 0; // Get peername virtual const char *getpeername() = 0; virtual ~IPDU_Observable(); };
This interface is interested in PDUs, and uses an object implementing IPDU_Observable.
#include <yazpp/pdu-observer.h> class my_pduobserver : public IPDU_Observer { public: // A PDU has been received virtual void recv_PDU(const char *buf, int len) = 0; // Called when Iyaz_PDU_Observable::connect was successful. virtual void connectNotify() = 0; // Called whenever the connection was closed virtual void failNotify() = 0; // Called whenever there is a timeout virtual void timeoutNotify() = 0; // Make clone of observer using IPDU_Observable interface virtual IPDU_Observer *sessionNotify( IPDU_Observable *the_PDU_Observable, int fd) = 0; };