/* * Copyright (c) 1998-2005, Index Data. * See the file LICENSE for details. * * $Id: z-assoc.h,v 1.1 2006/03/29 13:14:15 adam Exp $ */ #ifndef YAZ_Z_ASSOC_INCLUDED #define YAZ_Z_ASSOC_INCLUDED #include #include #include #include namespace yazpp_1 { /** Z39.50 Assocation. This object implements the client - and server role of a generic Z39.50 Association. */ class YAZ_EXPORT Z_Assoc : public IPDU_Observer { public: /// Create object using the PDU Observer specified Z_Assoc(IPDU_Observable *the_PDU_Observable); /// Destroy assocation and close PDU Observer virtual ~Z_Assoc(); /// Receive PDU void recv_PDU(const char *buf, int len); /// Connect notification virtual void connectNotify() = 0; /// Failure notification virtual void failNotify() = 0; /// Timeout notification virtual void timeoutNotify() = 0; /// Timeout specify void timeout(int timeout); /// Begin Z39.50 client role int client(const char *addr); /// Begin Z39.50 server role int server(const char *addr); /// Close connection void close(); /// Decode Z39.50 PDU. Z_GDU *decode_GDU(const char *buf, int len); /// Encode Z39.50 PDU. int encode_GDU(Z_GDU *apdu, char **buf, int *len); /// Send Z39.50 PDU int send_Z_PDU(Z_APDU *apdu, int *len); int send_GDU(Z_GDU *apdu, int *len); /// Receive Z39.50 PDU virtual void recv_GDU(Z_GDU *apdu, int len) = 0; /// Create Z39.50 PDU with reasonable defaults Z_APDU *create_Z_PDU(int type); /// Request Alloc ODR odr_encode (); ODR odr_decode (); ODR odr_print (); void set_APDU_log(const char *fname); const char *get_APDU_log(); /// OtherInformation void get_otherInfoAPDU(Z_APDU *apdu, Z_OtherInformation ***oip); Z_OtherInformationUnit *update_otherInformation ( Z_OtherInformation **otherInformationP, int createFlag, int *oid, int categoryValue, int deleteFlag); void set_otherInformationString ( Z_OtherInformation **otherInformationP, int *oid, int categoryValue, const char *str); void set_otherInformationString ( Z_OtherInformation **otherInformation, int oidval, int categoryValue, const char *str); void set_otherInformationString ( Z_APDU *apdu, int oidval, int categoryValue, const char *str); Z_ReferenceId *getRefID(char* str); Z_ReferenceId **get_referenceIdP(Z_APDU *apdu); void transfer_referenceId(Z_APDU *from, Z_APDU *to); const char *get_hostname(); int set_APDU_yazlog(int v); private: static int yaz_init_flag; static int yaz_init_func(); IPDU_Observable *m_PDU_Observable; ODR m_odr_in; ODR m_odr_out; ODR m_odr_print; int m_log; FILE *m_APDU_file; char *m_APDU_fname; char *m_hostname; int m_APDU_yazlog; }; }; #endif /* * Local variables: * c-basic-offset: 4 * indent-tabs-mode: nil * End: * vim: shiftwidth=4 tabstop=8 expandtab */