trailer.
* Copyright (c) 1998-2004, Index Data.
* See the file LICENSE for details.
*
- * $Id: cql2rpn.h,v 1.2 2005-06-02 06:40:20 adam Exp $
+ * $Id: cql2rpn.h,v 1.3 2005-06-25 15:53:19 adam Exp $
*/
#include <yaz/cql.h>
~Yaz_cql2rpn();
void set_pqf_file(const char *fname);
int query_transform(const char *cql, Z_RPNQuery **rpnquery, ODR o,
- char **addinfop);
+ char **addinfop);
private:
cql_transform_t m_transform;
};
};
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+
* Copyright (c) 1998-2005, Index Data.
* See the file LICENSE for details.
*
- * $Id: gdu.h,v 1.1 2005-06-21 17:37:15 adam Exp $
+ * $Id: gdu.h,v 1.2 2005-06-25 15:53:19 adam Exp $
*/
#ifndef YAZPP_GDU_INCLUDED
class YAZ_EXPORT GDU {
public:
- GDU(Z_GDU *gdu);
- GDU(Z_APDU *apdu);
- ~GDU();
- Z_GDU *get();
- void extract_odr_to(ODR dst);
+ GDU(Z_GDU *gdu);
+ GDU(Z_APDU *apdu);
+ ~GDU();
+ Z_GDU *get();
+ void extract_odr_to(ODR dst);
private:
- void base(Z_GDU *gdu, ODR o);
- Z_GDU *m_gdu;
- ODR m_decode;
+ void base(Z_GDU *gdu, ODR o);
+ Z_GDU *m_gdu;
+ ODR m_decode;
};
class GDUQueue_List {
- friend class GDUQueue;
+ friend class GDUQueue;
private:
- GDU *m_item;
- GDUQueue_List *m_next;
+ GDU *m_item;
+ GDUQueue_List *m_next;
};
class GDUQueue {
public:
- GDUQueue();
- ~GDUQueue();
- void clear();
- void enqueue(GDU *gdu);
- GDU *dequeue();
- int size();
+ GDUQueue();
+ ~GDUQueue();
+ void clear();
+ void enqueue(GDU *gdu);
+ GDU *dequeue();
+ int size();
private:
- GDUQueue_List *m_list;
+ GDUQueue_List *m_list;
};
};
#endif
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+
* Copyright (c) 1998-2005, Index Data.
* See the file LICENSE for details.
*
- * $Id: ir-assoc.h,v 1.5 2005-06-08 13:28:05 adam Exp $
+ * $Id: ir-assoc.h,v 1.6 2005-06-25 15:53:19 adam Exp $
*/
#include <yaz++/z-assoc.h>
int m_log;
};
};
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+
* Copyright (c) 1998-2005, Index Data.
* See the file LICENSE for details.
*
- * $Id: pdu-assoc.h,v 1.7 2005-06-08 13:28:05 adam Exp $
+ * $Id: pdu-assoc.h,v 1.8 2005-06-25 15:53:19 adam Exp $
*/
#ifndef YAZ_PDU_ASSOC_INCLUDED
friend class PDU_AssocThread;
private:
enum {
- Connecting,
- Listen,
- Ready,
- Closed,
- Writing,
- Accepting
+ Connecting,
+ Listen,
+ Ready,
+ Closed,
+ Writing,
+ Accepting
} m_state;
class PDU_Queue {
public:
- PDU_Queue(const char *buf, int len);
- PDU_Queue::~PDU_Queue();
- char *m_buf;
- int m_len;
- PDU_Queue *m_next;
+ PDU_Queue(const char *buf, int len);
+ PDU_Queue::~PDU_Queue();
+ char *m_buf;
+ int m_len;
+ PDU_Queue *m_next;
};
PDU_Assoc *m_parent;
PDU_Assoc *m_children;
PDU_Assoc(yazpp_1::ISocketObservable *socketObservable);
/// Create Object using existing comstack
PDU_Assoc(yazpp_1::ISocketObservable *socketObservable,
- COMSTACK cs);
+ COMSTACK cs);
/// Close socket and destroy object.
/// virtual ~PDU_Assoc();
/// Clone the object
#endif
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+
* Copyright (c) 1998-2005, Index Data.
* See the file LICENSE for details.
*
- * $Id: pdu-observer.h,v 1.6 2005-06-08 13:28:05 adam Exp $
+ * $Id: pdu-observer.h,v 1.7 2005-06-25 15:53:19 adam Exp $
*/
#ifndef YAZ_PDU_OBSERVER_H
virtual void timeoutNotify() = 0;
/// Make clone of observer using IPDU_Observable interface
virtual IPDU_Observer *sessionNotify(
- IPDU_Observable *the_PDU_Observable, int fd) = 0;
+ IPDU_Observable *the_PDU_Observable, int fd) = 0;
};
};
#endif
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+
* Copyright (c) 1998-2000, Index Data.
* See the file LICENSE for details.
*
- * $Id: query.h,v 1.2 2005-06-02 06:40:21 adam Exp $
+ * $Id: query.h,v 1.3 2005-06-25 15:53:19 adam Exp $
*/
namespace yazpp_1 {
virtual void print (char *str, int len) = 0;
};
};
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+
* Copyright (c) 2002-2004, Index Data.
* See the file LICENSE for details.
*
- * $Id: record-cache.h,v 1.3 2005-06-08 13:28:05 adam Exp $
+ * $Id: record-cache.h,v 1.4 2005-06-25 15:53:19 adam Exp $
*/
void add (ODR o, Z_NamePlusRecordList *npr, int start, int hits);
int lookup (ODR o, Z_NamePlusRecordList **npr, int start, int num,
- Odr_oid *syntax, Z_RecordComposition *comp);
+ Odr_oid *syntax, Z_RecordComposition *comp);
void clear();
void copy_searchRequest(Z_SearchRequest *sr);
Z_SearchRequest *m_searchRequest;
Z_PresentRequest *m_presentRequest;
int match (RecordCache_Entry *entry,
- Odr_oid *syntax, int offset,
- Z_RecordComposition *comp);
+ Odr_oid *syntax, int offset,
+ Z_RecordComposition *comp);
int m_max_size;
};
};
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+
* Copyright (c) 1998-2005, Index Data.
* See the file LICENSE for details.
*
- * $Id: socket-manager.h,v 1.5 2005-06-08 13:28:05 adam Exp $
+ * $Id: socket-manager.h,v 1.6 2005-06-25 15:53:19 adam Exp $
*/
#ifndef YAZ_SOCKET_MANAGER_INCLUDED
class YAZ_EXPORT SocketManager : public ISocketObservable {
private:
struct SocketEntry {
- ISocketObserver *observer;
- int fd;
- unsigned mask;
- int timeout;
+ ISocketObserver *observer;
+ int fd;
+ unsigned mask;
+ int timeout;
int timeout_this;
- time_t last_activity;
- SocketEntry *next;
+ time_t last_activity;
+ SocketEntry *next;
};
SocketEntry *m_observers; // all registered observers
struct SocketEvent {
- ISocketObserver *observer;
- int event;
- SocketEvent *next; // front in queue
- SocketEvent *prev; // back in queue
+ ISocketObserver *observer;
+ int event;
+ SocketEvent *next; // front in queue
+ SocketEvent *prev; // back in queue
};
SocketEvent *m_queue_front;
SocketEvent *m_queue_back;
SocketEntry **SocketManager::lookupObserver
- (ISocketObserver *observer);
+ (ISocketObserver *observer);
SocketEvent *SocketManager::getEvent();
void putEvent(SocketEvent *event);
void removeEvent(ISocketObserver *observer);
virtual void maskObserver(ISocketObserver *observer, int mask);
/// Set timeout
virtual void timeoutObserver(ISocketObserver *observer,
- int timeout);
+ int timeout);
/// Process one event. return > 0 if event could be processed;
int processEvent();
SocketManager();
};
#endif
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+
* Copyright (c) 1998-2005, Index Data.
* See the file LICENSE for details.
*
- * $Id: socket-observer.h,v 1.5 2005-06-08 13:28:05 adam Exp $
+ * $Id: socket-observer.h,v 1.6 2005-06-25 15:53:19 adam Exp $
*/
#ifndef YAZ_SOCKET_OBSERVER_H
namespace yazpp_1 {
enum SocketObserve {
- SOCKET_OBSERVE_READ=1,
- SOCKET_OBSERVE_WRITE=2,
- SOCKET_OBSERVE_EXCEPT=4,
- SOCKET_OBSERVE_TIMEOUT=8
+ SOCKET_OBSERVE_READ=1,
+ SOCKET_OBSERVE_WRITE=2,
+ SOCKET_OBSERVE_EXCEPT=4,
+ SOCKET_OBSERVE_TIMEOUT=8
};
/**
virtual void maskObserver(ISocketObserver *observer, int mask) = 0;
/// Specify timeout
virtual void timeoutObserver(ISocketObserver *observer,
- int timeout)=0;
+ int timeout)=0;
};
/** Socket Observer.
};
#endif
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+
* Copyright (c) 1998-2005, Index Data.
* See the file LICENSE for details.
*
- * $Id: z-assoc.h,v 1.9 2005-06-21 17:37:15 adam Exp $
+ * $Id: z-assoc.h,v 1.10 2005-06-25 15:53:19 adam Exp $
*/
#ifndef YAZ_Z_ASSOC_INCLUDED
/// 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);
+ Z_OtherInformation **otherInformationP, int createFlag,
+ int *oid, int categoryValue, int deleteFlag);
void set_otherInformationString (
- Z_OtherInformation **otherInformationP,
- int *oid, int categoryValue,
- const char *str);
+ Z_OtherInformation **otherInformationP,
+ int *oid, int categoryValue,
+ const char *str);
void set_otherInformationString (
- Z_OtherInformation **otherInformation,
- int oidval, int categoryValue,
- const char *str);
+ Z_OtherInformation **otherInformation,
+ int oidval, int categoryValue,
+ const char *str);
void set_otherInformationString (
- Z_APDU *apdu,
- int oidval, int categoryValue,
- const char *str);
+ Z_APDU *apdu,
+ int oidval, int categoryValue,
+ const char *str);
Z_ReferenceId *getRefID(char* str);
Z_ReferenceId **get_referenceIdP(Z_APDU *apdu);
};
#endif
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+
* Copyright (c) 2001, Index Data.
* See the file LICENSE for details.
*
- * $Id: z-databases.h,v 1.2 2005-06-02 06:40:21 adam Exp $
+ * $Id: z-databases.h,v 1.3 2005-06-25 15:53:19 adam Exp $
*/
#include <yaz/proto.h>
NMEM nmem;
};
};
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+
* Copyright (c) 1998-2000, Index Data.
* See the file LICENSE for details.
*
- * $Id: z-query.h,v 1.4 2005-06-02 06:40:21 adam Exp $
+ * $Id: z-query.h,v 1.5 2005-06-25 15:53:19 adam Exp $
*/
#include <yaz/proto.h>
void pr_term(WRBUF wbuf, char *buf, int len);
};
};
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+
* Copyright (c) 2000-2005, Index Data.
* See the file LICENSE for details.
*
- * $Id: z-server.h,v 1.7 2005-06-08 13:28:05 adam Exp $
+ * $Id: z-server.h,v 1.8 2005-06-25 15:53:19 adam Exp $
*/
#include <yaz++/z-assoc.h>
class YAZ_EXPORT Z_ServerUtility {
public:
void create_databaseRecord (ODR odr, Z_NamePlusRecord *rec,
- const char *dbname, int format,
- const void *buf, int len);
+ const char *dbname, int format,
+ const void *buf, int len);
void create_surrogateDiagnostics(ODR odr, Z_NamePlusRecord *rec,
- const char *dbname, int error,
- char *const addinfo);
+ const char *dbname, int error,
+ char *const addinfo);
Z_Records *create_nonSurrogateDiagnostics (ODR odr, int error,
- const char *addinfo);
+ const char *addinfo);
void Z_ServerUtility::create_diagnostics (
ODR odr, int error, const char *addinfo,
class YAZ_EXPORT IServer_Facility {
public:
virtual int init(Z_Server *server,
- Z_InitRequest *initRequest,
- Z_InitResponse *initResponse) = 0;
+ Z_InitRequest *initRequest,
+ Z_InitResponse *initResponse) = 0;
virtual int recv(Z_Server *server, Z_APDU *apdu) = 0;
};
class YAZ_EXPORT Yaz_Facility_ILL : public IServer_Facility {
public:
virtual void ill_service (Z_ExtendedServicesRequest *req,
- Z_ItemOrder *io,
- Z_ExtendedServicesResponse *res) = 0;
+ Z_ItemOrder *io,
+ Z_ExtendedServicesResponse *res) = 0;
int init(Z_Server *server,
- Z_InitRequest *initRequest,
- Z_InitResponse *initResponse);
+ Z_InitRequest *initRequest,
+ Z_InitResponse *initResponse);
int recv(Z_Server *server, Z_APDU *apdu);
};
class YAZ_EXPORT Yaz_Facility_Update : public IServer_Facility {
public:
virtual void update_service (Z_ExtendedServicesRequest *req,
- Z_IUUpdate *io,
- Z_ExtendedServicesResponse *res) = 0;
+ Z_IUUpdate *io,
+ Z_ExtendedServicesResponse *res) = 0;
virtual void update_service0 (Z_ExtendedServicesRequest *req,
- Z_IU0Update *io,
- Z_ExtendedServicesResponse *res) = 0;
+ Z_IU0Update *io,
+ Z_ExtendedServicesResponse *res) = 0;
int init(Z_Server *server,
- Z_InitRequest *initRequest,
- Z_InitResponse *initResponse);
+ Z_InitRequest *initRequest,
+ Z_InitResponse *initResponse);
int recv(Z_Server *server, Z_APDU *apdu);
};
public:
virtual int sr_init (Z_InitRequest *initRequest,
- Z_InitResponse *initResponse) = 0;
+ Z_InitResponse *initResponse) = 0;
virtual void sr_search (Z_SearchRequest *searchRequest,
- Z_SearchResponse *searchResponse) = 0;
+ Z_SearchResponse *searchResponse) = 0;
virtual void sr_present (Z_PresentRequest *presentRequest,
- Z_PresentResponse *presentResponse) = 0;
+ Z_PresentResponse *presentResponse) = 0;
virtual void sr_record (const char *resultSetName,
- int position,
- int *format,
- Z_RecordComposition *comp,
- Z_NamePlusRecord *namePlusRecord,
- Z_Records *diagnostics) = 0;
+ int position,
+ int *format,
+ Z_RecordComposition *comp,
+ Z_NamePlusRecord *namePlusRecord,
+ Z_Records *diagnostics) = 0;
int init(Z_Server *server,
- Z_InitRequest *initRequest,
- Z_InitResponse *initResponse);
+ Z_InitRequest *initRequest,
+ Z_InitResponse *initResponse);
int recv(Z_Server *server, Z_APDU *apdu);
ODR odr_encode();
ODR odr_decode();
private:
Z_Records *pack_records (Z_Server *s,
- const char *resultSetName,
- int start, int num,
- Z_RecordComposition *comp,
- int *next, int *pres,
- int *oid);
+ const char *resultSetName,
+ int start, int num,
+ Z_RecordComposition *comp,
+ int *next, int *pres,
+ int *oid);
void fetch_via_piggyback (Z_Server *s,
- Z_SearchRequest *searchRequest,
- Z_SearchResponse *searchResponse);
+ Z_SearchRequest *searchRequest,
+ Z_SearchResponse *searchResponse);
void fetch_via_present (Z_Server *s,
- Z_PresentRequest *req, Z_PresentResponse *res);
+ Z_PresentRequest *req, Z_PresentResponse *res);
int m_preferredMessageSize;
int m_maximumRecordSize;
const char *get_record(size_t position);
};
};
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+
* Copyright (c) 1998-2005, Index Data.
* See the file LICENSE for details.
*
- * $Id: gdu.cpp,v 1.1 2005-06-21 17:37:15 adam Exp $
+ * $Id: gdu.cpp,v 1.2 2005-06-25 15:53:19 adam Exp $
*/
#include <yaz++/gdu.h>
m_gdu = 0;
if (z_GDU(encode, &gdu, 0, "encode"))
{
- int len;
- char *buf = odr_getbuf(encode, &len, 0);
-
- odr_setbuf(m_decode, buf, len, 0);
- z_GDU(m_decode, &m_gdu, 0, 0);
+ int len;
+ char *buf = odr_getbuf(encode, &len, 0);
+
+ odr_setbuf(m_decode, buf, len, 0);
+ z_GDU(m_decode, &m_gdu, 0, 0);
}
odr_destroy(encode);
}
{
NMEM nmem = odr_extract_mem(m_decode);
if (!dst->mem)
- dst->mem = nmem_create();
+ dst->mem = nmem_create();
nmem_transfer(dst->mem, nmem);
nmem_destroy(nmem);
}
if (!*l)
return 0;
while ((*l)->m_next)
- l = &(*l)->m_next;
+ l = &(*l)->m_next;
GDU *m = (*l)->m_item;
delete *l;
*l = 0;
{
GDU *g;
while ((g = dequeue()))
- delete g;
+ delete g;
}
GDUQueue::~GDUQueue()
{
clear();
}
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+
* Copyright (c) 1998-2004, Index Data.
* See the file LICENSE for details.
*
- * $Id: yaz-cql2rpn.cpp,v 1.7 2005-06-02 06:40:21 adam Exp $
+ * $Id: yaz-cql2rpn.cpp,v 1.8 2005-06-25 15:53:19 adam Exp $
*/
#include <yaz/log.h>
Yaz_cql2rpn::~Yaz_cql2rpn()
{
if (m_transform)
- cql_transform_close(m_transform);
+ cql_transform_close(m_transform);
}
void Yaz_cql2rpn::set_pqf_file(const char *fname)
{
if (!m_transform)
- m_transform = cql_transform_open_fname(fname);
+ m_transform = cql_transform_open_fname(fname);
}
int Yaz_cql2rpn::query_transform(const char *cql_query,
- Z_RPNQuery **rpnquery, ODR o,
- char **addinfop)
+ Z_RPNQuery **rpnquery, ODR o,
+ char **addinfop)
{
const char *addinfo = 0;
if (!m_transform)
- return -3;
+ return -3;
CQL_parser cp = cql_parser_create();
int r = cql_parser_string(cp, cql_query);
if (r)
{
- yaz_log(YLOG_LOG, "CQL Parse Error");
- r = 10;
+ yaz_log(YLOG_LOG, "CQL Parse Error");
+ r = 10;
}
else
{
- char rpn_buf[1024];
- r = cql_transform_buf(m_transform, cql_parser_result(cp),
- rpn_buf, sizeof(rpn_buf)-1);
- if (!r)
- {
- YAZ_PQF_Parser pp = yaz_pqf_create();
+ char rpn_buf[1024];
+ r = cql_transform_buf(m_transform, cql_parser_result(cp),
+ rpn_buf, sizeof(rpn_buf)-1);
+ if (!r)
+ {
+ YAZ_PQF_Parser pp = yaz_pqf_create();
- *rpnquery = yaz_pqf_parse(pp, o, rpn_buf);
- if (!*rpnquery)
- {
- size_t off;
- const char *pqf_msg;
- int code = yaz_pqf_error(pp, &pqf_msg, &off);
- yaz_log(YLOG_WARN, "PQF Parser Error %s (code %d)",
- pqf_msg, code);
- r = -1;
- }
- yaz_pqf_destroy(pp);
- }
- else
- {
- r = cql_transform_error(m_transform, &addinfo);
- yaz_log(YLOG_LOG, "CQL Transform Error %d %s", r,
- addinfo ? addinfo : "");
- }
- }
+ *rpnquery = yaz_pqf_parse(pp, o, rpn_buf);
+ if (!*rpnquery)
+ {
+ size_t off;
+ const char *pqf_msg;
+ int code = yaz_pqf_error(pp, &pqf_msg, &off);
+ yaz_log(YLOG_WARN, "PQF Parser Error %s (code %d)",
+ pqf_msg, code);
+ r = -1;
+ }
+ yaz_pqf_destroy(pp);
+ }
+ else
+ {
+ r = cql_transform_error(m_transform, &addinfo);
+ yaz_log(YLOG_LOG, "CQL Transform Error %d %s", r,
+ addinfo ? addinfo : "");
+ }
+ }
cql_parser_destroy(cp);
if (addinfo)
- *addinfop = odr_strdup(o, addinfo);
+ *addinfop = odr_strdup(o, addinfo);
else
- *addinfop = 0;
+ *addinfop = 0;
return r;
}
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+
* Copyright (c) 1998-2003, Index Data.
* See the file LICENSE for details.
*
- * $Id: yaz-ir-assoc.cpp,v 1.25 2005-06-08 13:28:05 adam Exp $
+ * $Id: yaz-ir-assoc.cpp,v 1.26 2005-06-25 15:53:19 adam Exp $
*/
#include <assert.h>
IR_Assoc::~IR_Assoc()
{
if (m_elementSetNames)
- delete [] m_elementSetNames->u.generic;
+ delete [] m_elementSetNames->u.generic;
delete [] m_elementSetNames;
delete [] m_host;
delete [] m_proxy;
int i;
yaz_log (m_log, "IR_Assoc::set_databaseNames num=%d", num);
for (i = 0; i<m_num_databaseNames; i++)
- delete [] m_databaseNames[i];
+ delete [] m_databaseNames[i];
delete [] m_databaseNames;
m_num_databaseNames = num;
m_databaseNames = new char *[num];
for (i = 0; i<m_num_databaseNames; i++)
{
- m_databaseNames[i] = new char[strlen(list[i])+1];
- strcpy(m_databaseNames[i], list[i]);
+ m_databaseNames[i] = new char[strlen(list[i])+1];
+ strcpy(m_databaseNames[i], list[i]);
}
}
int num = 0;
int len = 0;
for (char *cp = dbtmp; ; cp++)
- if (*cp && !strchr(sep, *cp))
- len++;
- else
- {
- if (len)
- {
- list[num] = cp - len;
- num++;
- }
- if (!*cp)
- break;
- *cp = '\0';
- len = 0;
- }
+ if (*cp && !strchr(sep, *cp))
+ len++;
+ else
+ {
+ if (len)
+ {
+ list[num] = cp - len;
+ num++;
+ }
+ if (!*cp)
+ break;
+ *cp = '\0';
+ len = 0;
+ }
set_databaseNames (num, list);
delete [] dbtmp;
delete [] list;
{
m_preferredRecordSyntax = VAL_NONE;
if (syntax && *syntax)
- m_preferredRecordSyntax = oid_getvalbyname (syntax);
+ m_preferredRecordSyntax = oid_getvalbyname (syntax);
}
void IR_Assoc::get_preferredRecordSyntax (int *value)
void IR_Assoc::set_elementSetName (const char *elementSetName)
{
if (m_elementSetNames)
- delete [] m_elementSetNames->u.generic;
+ delete [] m_elementSetNames->u.generic;
delete m_elementSetNames;
m_elementSetNames = 0;
if (elementSetName && *elementSetName)
{
- m_elementSetNames = new Z_ElementSetNames;
- m_elementSetNames->which = Z_ElementSetNames_generic;
- m_elementSetNames->u.generic = new char[strlen(elementSetName)+1];
- strcpy (m_elementSetNames->u.generic, elementSetName);
+ m_elementSetNames = new Z_ElementSetNames;
+ m_elementSetNames->which = Z_ElementSetNames_generic;
+ m_elementSetNames->u.generic = new char[strlen(elementSetName)+1];
+ strcpy (m_elementSetNames->u.generic, elementSetName);
}
}
void IR_Assoc::get_elementSetName (const char **elementSetName)
{
if (!m_elementSetNames ||
- m_elementSetNames->which != Z_ElementSetNames_generic)
+ m_elementSetNames->which != Z_ElementSetNames_generic)
{
- *elementSetName = 0;
- return;
+ *elementSetName = 0;
+ return;
}
*elementSetName = m_elementSetNames->u.generic;
}
void IR_Assoc::recv_GDU(Z_GDU *apdu, int len)
{
if (apdu->which == Z_GDU_Z3950)
- recv_Z_PDU(apdu->u.z3950, len);
+ recv_Z_PDU(apdu->u.z3950, len);
}
void IR_Assoc::recv_Z_PDU(Z_APDU *apdu, int len)
switch (apdu->which)
{
case Z_APDU_initResponse:
- yaz_log (m_log, "recv InitResponse");
- recv_initResponse(apdu->u.initResponse);
- break;
+ yaz_log (m_log, "recv InitResponse");
+ recv_initResponse(apdu->u.initResponse);
+ break;
case Z_APDU_initRequest:
yaz_log (m_log, "recv InitRequest");
- recv_initRequest(apdu->u.initRequest);
+ recv_initRequest(apdu->u.initRequest);
break;
case Z_APDU_searchRequest:
yaz_log (m_log, "recv searchRequest");
- recv_searchRequest(apdu->u.searchRequest);
+ recv_searchRequest(apdu->u.searchRequest);
break;
case Z_APDU_searchResponse:
- yaz_log (m_log, "recv searchResponse");
- recv_searchResponse(apdu->u.searchResponse);
- break;
+ yaz_log (m_log, "recv searchResponse");
+ recv_searchResponse(apdu->u.searchResponse);
+ break;
case Z_APDU_presentRequest:
yaz_log (m_log, "recv presentRequest");
- recv_presentRequest(apdu->u.presentRequest);
+ recv_presentRequest(apdu->u.presentRequest);
break;
case Z_APDU_presentResponse:
yaz_log (m_log, "recv presentResponse");
- recv_presentResponse(apdu->u.presentResponse);
+ recv_presentResponse(apdu->u.presentResponse);
break;
case Z_APDU_extendedServicesResponse:
yaz_log (m_log, "recv extendedServiceResponse");
req->query = query->get_Z_Query();
if (!req->query)
- return -1;
+ return -1;
get_databaseNames (&req->num_databaseNames, &req->databaseNames);
int oid_syntax[OID_SIZE];
oident prefsyn;
get_preferredRecordSyntax(&recordSyntax);
if (recordSyntax != VAL_NONE)
{
- prefsyn.proto = PROTO_Z3950;
- prefsyn.oclass = CLASS_RECSYN;
- prefsyn.value = (enum oid_value) recordSyntax;
- oid_ent_to_oid(&prefsyn, oid_syntax);
- req->preferredRecordSyntax = oid_syntax;
+ prefsyn.proto = PROTO_Z3950;
+ prefsyn.oclass = CLASS_RECSYN;
+ prefsyn.value = (enum oid_value) recordSyntax;
+ oid_ent_to_oid(&prefsyn, oid_syntax);
+ req->preferredRecordSyntax = oid_syntax;
}
yaz_log (m_log, "send_searchRequest");
assert (req->otherInfo == 0);
if (m_cookie)
{
- set_otherInformationString(&req->otherInfo, VAL_COOKIE, 1, m_cookie);
- assert (req->otherInfo);
+ set_otherInformationString(&req->otherInfo, VAL_COOKIE, 1, m_cookie);
+ assert (req->otherInfo);
}
if ( pRefId )
get_preferredRecordSyntax (&recordSyntax);
if (recordSyntax != VAL_NONE)
{
- prefsyn.proto = PROTO_Z3950;
- prefsyn.oclass = CLASS_RECSYN;
- prefsyn.value = (enum oid_value) recordSyntax;
- oid_ent_to_oid(&prefsyn, oid_syntax);
- req->preferredRecordSyntax = oid_syntax;
+ prefsyn.proto = PROTO_Z3950;
+ prefsyn.oclass = CLASS_RECSYN;
+ prefsyn.value = (enum oid_value) recordSyntax;
+ oid_ent_to_oid(&prefsyn, oid_syntax);
+ req->preferredRecordSyntax = oid_syntax;
}
Z_RecordComposition compo;
Z_ElementSetNames *elementSetNames;
get_elementSetName (&elementSetNames);
if (elementSetNames)
{
- req->recordComposition = &compo;
+ req->recordComposition = &compo;
compo.which = Z_RecordComp_simple;
compo.u.simple = elementSetNames;
}
if (m_cookie)
- set_otherInformationString(&req->otherInfo, VAL_COOKIE, 1, m_cookie);
+ set_otherInformationString(&req->otherInfo, VAL_COOKIE, 1, m_cookie);
if ( pRefId )
{
m_proxy = 0;
if (str)
{
- m_proxy = new char[strlen(str)+1];
- strcpy (m_proxy, str);
+ m_proxy = new char[strlen(str)+1];
+ strcpy (m_proxy, str);
}
}
m_cookie = 0;
if (str)
{
- m_cookie = new char[strlen(str)+1];
- strcpy(m_cookie, str);
+ m_cookie = new char[strlen(str)+1];
+ strcpy(m_cookie, str);
}
}
strcpy(m_host, addr);
const char *dbpart = strchr(m_host, '/');
if (dbpart)
- set_databaseNames (dbpart+1, "+ ");
+ set_databaseNames (dbpart+1, "+ ");
Z_Assoc::client(m_proxy ? m_proxy : m_host);
}
}
if (m_proxy && m_host)
- set_otherInformationString(&req->otherInfo, VAL_PROXY, 1, m_host);
+ set_otherInformationString(&req->otherInfo, VAL_PROXY, 1, m_host);
if (m_cookie)
- set_otherInformationString(&req->otherInfo, VAL_COOKIE, 1, m_cookie);
+ set_otherInformationString(&req->otherInfo, VAL_COOKIE, 1, m_cookie);
return send_Z_PDU(apdu, 0);
}
}
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+
* Copyright (c) 2000-2001, Index Data.
* See the file LICENSE for details.
*
- * $Id: yaz-marc-sample.cpp,v 1.8 2005-06-02 06:40:21 adam Exp $
+ * $Id: yaz-marc-sample.cpp,v 1.9 2005-06-25 15:53:19 adam Exp $
*/
#include <yaz++/z-server.h>
const char *Yaz_USMARC::get_record(size_t position)
{
if (position >= 1 && position <= (
- sizeof(marc_records) / sizeof(*marc_records)))
- return marc_records[position-1];
+ sizeof(marc_records) / sizeof(*marc_records)))
+ return marc_records[position-1];
return 0;
}
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+
* Copyright (c) 1998-2004, Index Data.
* See the file LICENSE for details.
*
- * $Id: yaz-my-client.cpp,v 1.20 2005-06-08 13:28:06 adam Exp $
+ * $Id: yaz-my-client.cpp,v 1.21 2005-06-25 15:53:19 adam Exp $
*/
#include <stdlib.h>
SocketManager *m_socketManager;
public:
MyClient(IPDU_Observable *the_PDU_Observable,
- SocketManager *the_SocketManager);
+ SocketManager *the_SocketManager);
IPDU_Observer *sessionNotify(
- IPDU_Observable *the_PDU_Observable, int fd);
+ IPDU_Observable *the_PDU_Observable, int fd);
int args(SocketManager *socketManager, int argc, char **argv);
int interactive(SocketManager *socketManager);
int wait();
void recv_diagrecs(Z_DiagRec **pp, int num);
void recv_namePlusRecord (Z_NamePlusRecord *zpr, int offset);
void recv_record(Z_DatabaseRecord *record, int offset,
- const char *databaseName);
+ const char *databaseName);
void recv_textRecord(int type, const char *buf, size_t len);
void recv_genericRecord(Z_GenericRecord *r);
void display_genericRecord(Z_GenericRecord *r, int level);
}
IPDU_Observer *MyClient::sessionNotify(IPDU_Observable *the_PDU_Observable,
- int fd)
+ int fd)
{
return new MyClient(the_PDU_Observable, m_socketManager);
}
MyClient::MyClient(IPDU_Observable *the_PDU_Observable,
- SocketManager *the_socketManager) :
+ SocketManager *the_socketManager) :
IR_Assoc (the_PDU_Observable)
{
m_setOffset = 1;
ent.value = (oid_value) VAL_COOKIE;
if (oid_ent_to_oid (&ent, oid) &&
- (oi = update_otherInformation(otherInfo, 0, oid, 1, 1)) &&
- oi->which == Z_OtherInfo_characterInfo)
- return oi->information.characterInfo;
+ (oi = update_otherInformation(otherInfo, 0, oid, 1, 1)) &&
+ oi->which == Z_OtherInfo_characterInfo)
+ return oi->information.characterInfo;
return 0;
}
printf ("Got InitResponse. Status ");
if (*initResponse->result)
{
- printf ("Ok\n");
-
- const char *p = get_cookie (&initResponse->otherInfo);
- if (p)
- {
- printf ("cookie = %s\n", p);
- set_cookie(p);
- }
+ printf ("Ok\n");
+
+ const char *p = get_cookie (&initResponse->otherInfo);
+ if (p)
+ {
+ printf ("cookie = %s\n", p);
+ set_cookie(p);
+ }
}
else
- printf ("Fail\n");
+ printf ("Fail\n");
}
void MyClient::recv_diagrecs(Z_DiagRec **pp, int num)
printf("Diagnostic message(s) from database:\n");
for (i = 0; i<num; i++)
{
- Z_DiagRec *p = pp[i];
- if (p->which != Z_DiagRec_defaultFormat)
- {
- printf("Diagnostic record not in default format.\n");
- return;
- }
- else
- r = p->u.defaultFormat;
- if (!(ent = oid_getentbyoid(r->diagnosticSetId)) ||
- ent->oclass != CLASS_DIAGSET || ent->value != VAL_BIB1)
- printf("Missing or unknown diagset\n");
- printf(" [%d] %s", *r->condition, diagbib1_str(*r->condition));
+ Z_DiagRec *p = pp[i];
+ if (p->which != Z_DiagRec_defaultFormat)
+ {
+ printf("Diagnostic record not in default format.\n");
+ return;
+ }
+ else
+ r = p->u.defaultFormat;
+ if (!(ent = oid_getentbyoid(r->diagnosticSetId)) ||
+ ent->oclass != CLASS_DIAGSET || ent->value != VAL_BIB1)
+ printf("Missing or unknown diagset\n");
+ printf(" [%d] %s", *r->condition, diagbib1_str(*r->condition));
#ifdef ASN_COMPILED
- switch (r->which)
- {
- case Z_DefaultDiagFormat_v2Addinfo:
- printf (" -- v2 addinfo '%s'\n", r->u.v2Addinfo);
- break;
- case Z_DefaultDiagFormat_v3Addinfo:
- printf (" -- v3 addinfo '%s'\n", r->u.v3Addinfo);
- break;
- }
+ switch (r->which)
+ {
+ case Z_DefaultDiagFormat_v2Addinfo:
+ printf (" -- v2 addinfo '%s'\n", r->u.v2Addinfo);
+ break;
+ case Z_DefaultDiagFormat_v3Addinfo:
+ printf (" -- v3 addinfo '%s'\n", r->u.v3Addinfo);
+ break;
+ }
#else
- if (r->addinfo && *r->addinfo)
- printf(" -- '%s'\n", r->addinfo);
- else
- printf("\n");
+ if (r->addinfo && *r->addinfo)
+ printf(" -- '%s'\n", r->addinfo);
+ else
+ printf("\n");
#endif
}
}
for (i = 0; i < v->num_triples; i++)
{
- printf("%*sclass=%d,type=%d", level * 4, "", *v->triples[i]->zclass,
- *v->triples[i]->type);
- if (v->triples[i]->which == Z_Triple_internationalString)
- printf(",value=%s\n", v->triples[i]->value.internationalString);
- else
- printf("\n");
+ printf("%*sclass=%d,type=%d", level * 4, "", *v->triples[i]->zclass,
+ *v->triples[i]->type);
+ if (v->triples[i]->which == Z_Triple_internationalString)
+ printf(",value=%s\n", v->triples[i]->value.internationalString);
+ else
+ printf("\n");
}
}
else if (t->content->which == Z_ElementData_string)
printf("%s\n", t->content->u.string);
else if (t->content->which == Z_ElementData_numeric)
- printf("%d\n", *t->content->u.numeric);
- else if (t->content->which == Z_ElementData_oid)
- {
- int *ip = t->content->u.oid;
- oident *oent;
-
- if ((oent = oid_getentbyoid(t->content->u.oid)))
- printf("OID: %s\n", oent->desc);
- else
- {
- printf("{");
- while (ip && *ip >= 0)
- printf(" %d", *(ip++));
- printf(" }\n");
- }
- }
- else if (t->content->which == Z_ElementData_noDataRequested)
- printf("[No data requested]\n");
- else if (t->content->which == Z_ElementData_elementEmpty)
- printf("[Element empty]\n");
- else if (t->content->which == Z_ElementData_elementNotThere)
- printf("[Element not there]\n");
- else
+ printf("%d\n", *t->content->u.numeric);
+ else if (t->content->which == Z_ElementData_oid)
+ {
+ int *ip = t->content->u.oid;
+ oident *oent;
+
+ if ((oent = oid_getentbyoid(t->content->u.oid)))
+ printf("OID: %s\n", oent->desc);
+ else
+ {
+ printf("{");
+ while (ip && *ip >= 0)
+ printf(" %d", *(ip++));
+ printf(" }\n");
+ }
+ }
+ else if (t->content->which == Z_ElementData_noDataRequested)
+ printf("[No data requested]\n");
+ else if (t->content->which == Z_ElementData_elementEmpty)
+ printf("[Element empty]\n");
+ else if (t->content->which == Z_ElementData_elementNotThere)
+ printf("[Element not there]\n");
+ else
printf("??????\n");
- if (t->appliedVariant)
- display_variant(t->appliedVariant, level+1);
- if (t->metaData && t->metaData->supportedVariants)
- {
- int c;
-
- printf("%*s---- variant list\n", (level+1)*4, "");
- for (c = 0; c < t->metaData->num_supportedVariants; c++)
- {
- printf("%*svariant #%d\n", (level+1)*4, "", c);
- display_variant(t->metaData->supportedVariants[c], level + 2);
- }
- }
+ if (t->appliedVariant)
+ display_variant(t->appliedVariant, level+1);
+ if (t->metaData && t->metaData->supportedVariants)
+ {
+ int c;
+
+ printf("%*s---- variant list\n", (level+1)*4, "");
+ for (c = 0; c < t->metaData->num_supportedVariants; c++)
+ {
+ printf("%*svariant #%d\n", (level+1)*4, "", c);
+ display_variant(t->metaData->supportedVariants[c], level + 2);
+ }
+ }
}
}
}
void MyClient::recv_record(Z_DatabaseRecord *record, int offset,
- const char *databaseName)
+ const char *databaseName)
{
Z_External *r = (Z_External*) record;
oident *ent = oid_getentbyoid(r->direct_reference);
*/
if (r->direct_reference)
{
- printf("Record type: ");
+ printf("Record type: ");
if (ent)
printf("%s\n", ent->desc);
}
/* Check if this is a known, ASN.1 type tucked away in an octet string */
Z_ext_typeent *etype = z_ext_getentbyref(ent->value);
if (ent && (r->which == Z_External_octet || r->which == Z_External_single)
- && (etype = z_ext_getentbyref(ent->value)))
+ && (etype = z_ext_getentbyref(ent->value)))
{
- void *rr;
- /*
- * Call the given decoder to process the record.
- */
- odr_setbuf(odr_decode(), (char*)record->u.octet_aligned->buf,
- record->u.octet_aligned->len, 0);
- if (!(*etype->fun)(odr_decode(), (char **)&rr, 0, 0))
- {
- odr_perror(odr_decode(), "Decoding constructed record.");
- fprintf(stderr, "[Near %d]\n", odr_offset(odr_decode()));
- fprintf(stderr, "Packet dump:\n---------\n");
- odr_dumpBER(stderr, (char*)record->u.octet_aligned->buf,
- record->u.octet_aligned->len);
- fprintf(stderr, "---------\n");
- }
- if (etype->what == Z_External_sutrs)
- {
- Z_SUTRS *sutrs = (Z_SUTRS *) rr;
- recv_textRecord ((int) VAL_SUTRS, (const char *) sutrs->buf,
- (size_t) sutrs->len);
- }
- return;
+ void *rr;
+ /*
+ * Call the given decoder to process the record.
+ */
+ odr_setbuf(odr_decode(), (char*)record->u.octet_aligned->buf,
+ record->u.octet_aligned->len, 0);
+ if (!(*etype->fun)(odr_decode(), (char **)&rr, 0, 0))
+ {
+ odr_perror(odr_decode(), "Decoding constructed record.");
+ fprintf(stderr, "[Near %d]\n", odr_offset(odr_decode()));
+ fprintf(stderr, "Packet dump:\n---------\n");
+ odr_dumpBER(stderr, (char*)record->u.octet_aligned->buf,
+ record->u.octet_aligned->len);
+ fprintf(stderr, "---------\n");
+ }
+ if (etype->what == Z_External_sutrs)
+ {
+ Z_SUTRS *sutrs = (Z_SUTRS *) rr;
+ recv_textRecord ((int) VAL_SUTRS, (const char *) sutrs->buf,
+ (size_t) sutrs->len);
+ }
+ return;
}
if (r->which == Z_External_octet && record->u.octet_aligned->len)
{
- switch (ent->value)
- {
- case VAL_ISO2709:
- case VAL_UNIMARC:
- case VAL_INTERMARC:
- case VAL_USMARC:
- case VAL_UKMARC:
- case VAL_NORMARC:
- case VAL_LIBRISMARC:
- case VAL_DANMARC:
- case VAL_FINMARC:
- case VAL_MAB:
- case VAL_CANMARC:
- case VAL_SBN:
- case VAL_PICAMARC:
- case VAL_AUSMARC:
- case VAL_IBERMARC:
- case VAL_CATMARC:
- case VAL_MALMARC:
- case VAL_JPMARC:
- case VAL_SWEMARC:
- case VAL_SIGLEMARC:
- case VAL_ISDSMARC:
- case VAL_RUSMARC:
- marc_display((char*) record->u.octet_aligned->buf,0);
- break;
- default:
- recv_textRecord((int) ent->value,
- (const char *) record->u.octet_aligned->buf,
- (size_t) record->u.octet_aligned->len);
- }
+ switch (ent->value)
+ {
+ case VAL_ISO2709:
+ case VAL_UNIMARC:
+ case VAL_INTERMARC:
+ case VAL_USMARC:
+ case VAL_UKMARC:
+ case VAL_NORMARC:
+ case VAL_LIBRISMARC:
+ case VAL_DANMARC:
+ case VAL_FINMARC:
+ case VAL_MAB:
+ case VAL_CANMARC:
+ case VAL_SBN:
+ case VAL_PICAMARC:
+ case VAL_AUSMARC:
+ case VAL_IBERMARC:
+ case VAL_CATMARC:
+ case VAL_MALMARC:
+ case VAL_JPMARC:
+ case VAL_SWEMARC:
+ case VAL_SIGLEMARC:
+ case VAL_ISDSMARC:
+ case VAL_RUSMARC:
+ marc_display((char*) record->u.octet_aligned->buf,0);
+ break;
+ default:
+ recv_textRecord((int) ent->value,
+ (const char *) record->u.octet_aligned->buf,
+ (size_t) record->u.octet_aligned->len);
+ }
}
else if (ent && ent->value == VAL_SUTRS && r->which == Z_External_sutrs)
- recv_textRecord((int) VAL_SUTRS, (const char *) r->u.sutrs->buf,
- (size_t) r->u.sutrs->len);
+ recv_textRecord((int) VAL_SUTRS, (const char *) r->u.sutrs->buf,
+ (size_t) r->u.sutrs->len);
else if (ent && ent->value == VAL_GRS1 && r->which == Z_External_grs1)
recv_genericRecord(r->u.grs1);
else
void MyClient::recv_namePlusRecord (Z_NamePlusRecord *zpr, int offset)
{
if (zpr->databaseName)
- printf("[%s]", zpr->databaseName);
+ printf("[%s]", zpr->databaseName);
if (zpr->which == Z_NamePlusRecord_surrogateDiagnostic)
recv_diagrecs(&zpr->u.surrogateDiagnostic, 1);
else
Z_DiagRec dr, *dr_p = &dr;
#endif
if (!records)
- return;
+ return;
int i;
switch (records->which)
{
case Z_Records_DBOSD:
for (i = 0; i < records->u.databaseOrSurDiagnostics->num_records; i++)
recv_namePlusRecord(records->u.databaseOrSurDiagnostics->
- records[i], i + m_setOffset);
- m_setOffset += records->u.databaseOrSurDiagnostics->num_records;
- break;
+ records[i], i + m_setOffset);
+ m_setOffset += records->u.databaseOrSurDiagnostics->num_records;
+ break;
case Z_Records_NSD:
#ifdef ASN_COMPILED
- dr.which = Z_DiagRec_defaultFormat;
- dr.u.defaultFormat = records->u.nonSurrogateDiagnostic;
- recv_diagrecs (&dr_p, 1);
+ dr.which = Z_DiagRec_defaultFormat;
+ dr.u.defaultFormat = records->u.nonSurrogateDiagnostic;
+ recv_diagrecs (&dr_p, 1);
#else
- recv_diagrecs (&records->u.nonSurrogateDiagnostic, 1);
+ recv_diagrecs (&records->u.nonSurrogateDiagnostic, 1);
#endif
- break;
+ break;
case Z_Records_multipleNSD:
- recv_diagrecs (records->u.multipleNonSurDiagnostics->diagRecs,
- records->u.multipleNonSurDiagnostics->num_diagRecs);
- break;
+ recv_diagrecs (records->u.multipleNonSurDiagnostics->diagRecs,
+ records->u.multipleNonSurDiagnostics->num_diagRecs);
+ break;
}
}
printf ("Got SearchResponse. Status ");
if (!*searchResponse->searchStatus)
{
- printf ("Fail\n");
+ printf ("Fail\n");
}
else
{
- printf ("Ok\n");
- printf ("Hits: %d\n", *searchResponse->resultCount);
+ printf ("Ok\n");
+ printf ("Hits: %d\n", *searchResponse->resultCount);
}
recv_records (searchResponse->records);
}
set_lastReceived(0);
while (m_socketManager->processEvent() > 0)
{
- if (get_lastReceived())
- return 1;
+ if (get_lastReceived())
+ return 1;
}
return 0;
}
int MyClient::cmd_init(char *args)
{
if (send_initRequest() >= 0)
- wait();
+ wait();
else
- close();
+ close();
return 1;
}
if (query.set_rpn(args) <= 0)
{
- printf ("Bad RPN query\n");
- return 1;
+ printf ("Bad RPN query\n");
+ return 1;
}
if (send_searchRequest(&query) >= 0)
- wait();
+ wait();
else
- printf ("Not connected\n");
+ printf ("Not connected\n");
return 1;
}
sscanf (args, "%d %d", &start, &number);
m_setOffset = start;
if (send_presentRequest(start, number) >= 0)
- wait();
+ wait();
else
- printf ("Not connected\n");
+ printf ("Not connected\n");
return 1;
}
int (MyClient::*fun)(char *arg);
const char *ad;
} cmd[] = {
- {"open", &MyClient::cmd_open, "<host>[':'<port>][/<database>]"},
- {"connect", &MyClient::cmd_connect, "<host>[':'<port>][/<database>]"},
- {"quit", &MyClient::cmd_quit, ""},
- {"close", &MyClient::cmd_close, ""},
- {"find", &MyClient::cmd_find, "<query>"},
- {"show", &MyClient::cmd_show, "[<start> [<number>]]"},
- {"cookie", &MyClient::cmd_cookie, "<cookie>"},
- {"init", &MyClient::cmd_init, ""},
- {"format", &MyClient::cmd_format, "<record-syntax>"},
- {"proxy", &MyClient::cmd_proxy, "<host>:[':'<port>]"},
- {0,0,0}
+ {"open", &MyClient::cmd_open, "<host>[':'<port>][/<database>]"},
+ {"connect", &MyClient::cmd_connect, "<host>[':'<port>][/<database>]"},
+ {"quit", &MyClient::cmd_quit, ""},
+ {"close", &MyClient::cmd_close, ""},
+ {"find", &MyClient::cmd_find, "<query>"},
+ {"show", &MyClient::cmd_show, "[<start> [<number>]]"},
+ {"cookie", &MyClient::cmd_cookie, "<cookie>"},
+ {"init", &MyClient::cmd_init, ""},
+ {"format", &MyClient::cmd_format, "<record-syntax>"},
+ {"proxy", &MyClient::cmd_proxy, "<host>:[':'<port>]"},
+ {0,0,0}
};
if (sscanf(commandLine, "%s %[^;]", cmdStr, cmdArgs) < 1)
- return 1;
+ return 1;
int i;
for (i = 0; cmd[i].cmd; i++)
- if (!strncmp(cmd[i].cmd, cmdStr, strlen(cmdStr)))
- break;
+ if (!strncmp(cmd[i].cmd, cmdStr, strlen(cmdStr)))
+ break;
int res = 1;
if (cmd[i].cmd) // Invoke command handler
- res = (this->*cmd[i].fun)(cmdArgs);
+ res = (this->*cmd[i].fun)(cmdArgs);
else // Dump help screen
{
- printf("Unknown command: %s.\n", cmdStr);
- printf("Currently recognized commands:\n");
- for (i = 0; cmd[i].cmd; i++)
- printf(" %s %s\n", cmd[i].cmd, cmd[i].ad);
+ printf("Unknown command: %s.\n", cmdStr);
+ printf("Currently recognized commands:\n");
+ for (i = 0; cmd[i].cmd; i++)
+ printf(" %s %s\n", cmd[i].cmd, cmd[i].ad);
}
return res;
}
char *line_in;
line_in=readline(C_PROMPT);
if (!line_in)
- return 0;
+ return 0;
#if HAVE_READLINE_HISTORY_H
if (*line_in)
- add_history(line_in);
+ add_history(line_in);
#endif
strncpy(m_thisCommand,line_in, 1023);
m_thisCommand[1023] = '\0';
printf (C_PROMPT);
fflush(stdout);
if (!fgets(m_thisCommand, 1023, stdin))
- return 0;
+ return 0;
#endif
// Remove trailing whitespace
char *cp = m_thisCommand + strlen(m_thisCommand);
while (cp != m_thisCommand && strchr("\t \n", cp[-1]))
- cp--;
+ cp--;
*cp = '\0';
cp = m_thisCommand;
// Remove leading spaces...
while (*cp && strchr ("\t \n", *cp))
- cp++;
+ cp++;
// Save command if non-empty
if (*cp != '\0')
- strcpy (m_lastCommand, cp);
+ strcpy (m_lastCommand, cp);
return m_lastCommand;
}
{
const char *cmd;
if (!m_interactive_flag)
- return 0;
+ return 0;
while ((cmd = getCommand()))
{
- if (!processCommand(cmd))
- break;
+ if (!processCommand(cmd))
+ break;
}
return 0;
}
{
case 0:
if (host)
- {
- usage(prog);
- return 1;
- }
- host = arg;
+ {
+ usage(prog);
+ return 1;
+ }
+ host = arg;
break;
case 'p':
- if (proxy)
- {
- usage(prog);
- return 1;
- }
- set_proxy(arg);
- break;
- case 'c':
- set_cookie(arg);
- break;
- case 'v':
- yaz_log_init_level (yaz_log_mask_str(arg));
- break;
- case 'q':
- m_interactive_flag = 0;
- break;
+ if (proxy)
+ {
+ usage(prog);
+ return 1;
+ }
+ set_proxy(arg);
+ break;
+ case 'c':
+ set_cookie(arg);
+ break;
+ case 'v':
+ yaz_log_init_level (yaz_log_mask_str(arg));
+ break;
+ case 'q':
+ m_interactive_flag = 0;
+ break;
default:
- usage(prog);
- return 1;
+ usage(prog);
+ return 1;
}
}
if (host)
{
- client (host);
+ client (host);
timeout (10);
- wait ();
+ wait ();
timeout (-1);
- send_initRequest();
- wait ();
+ send_initRequest();
+ wait ();
}
return 0;
}
MyClient z(some, &mySocketManager);
if (z.args(&mySocketManager, argc, argv))
- exit (1);
+ exit (1);
if (z.interactive(&mySocketManager))
- exit (1);
+ exit (1);
return 0;
}
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+
* Copyright (c) 1998-2001, Index Data.
* See the file LICENSE for details.
*
- * $Id: yaz-my-server.cpp,v 1.18 2005-06-08 13:28:06 adam Exp $
+ * $Id: yaz-my-server.cpp,v 1.19 2005-06-25 15:53:19 adam Exp $
*/
#include <stdlib.h>
class MyILL : public Yaz_Facility_ILL {
public:
void ill_service (Z_ExtendedServicesRequest *req,
- Z_ItemOrder *io,
- Z_ExtendedServicesResponse *res);
+ Z_ItemOrder *io,
+ Z_ExtendedServicesResponse *res);
};
class MyUpdate : public Yaz_Facility_Update {
public:
void update_service (Z_ExtendedServicesRequest *req,
- Z_IUUpdate *io,
- Z_ExtendedServicesResponse *res);
+ Z_IUUpdate *io,
+ Z_ExtendedServicesResponse *res);
void update_service0 (Z_ExtendedServicesRequest *req,
- Z_IU0Update *io,
- Z_ExtendedServicesResponse *res);
+ Z_IU0Update *io,
+ Z_ExtendedServicesResponse *res);
};
class MyRetrieval : public Yaz_Facility_Retrieval, Yaz_USMARC {
public:
int sr_init (Z_InitRequest *initRequest,
- Z_InitResponse *initResponse);
+ Z_InitResponse *initResponse);
void sr_search (Z_SearchRequest *searchRequest,
- Z_SearchResponse *searchResponse);
+ Z_SearchResponse *searchResponse);
void sr_present (Z_PresentRequest *presentRequest,
- Z_PresentResponse *presentResponse);
+ Z_PresentResponse *presentResponse);
void sr_record (const char *resultSetName,
- int position,
- int *format,
- Z_RecordComposition *comp,
- Z_NamePlusRecord *namePlusRecord,
- Z_Records *records);
+ int position,
+ int *format,
+ Z_RecordComposition *comp,
+ Z_NamePlusRecord *namePlusRecord,
+ Z_Records *records);
};
class MyServer : public Z_Server {
~MyServer();
MyServer(IPDU_Observable *the_PDU_Observable);
IPDU_Observer* sessionNotify(IPDU_Observable *the_PDU_Observable,
- int fd);
+ int fd);
void failNotify();
void timeoutNotify();
void connectNotify();
};
void MyILL::ill_service (Z_ExtendedServicesRequest *req,
- Z_ItemOrder *io,
- Z_ExtendedServicesResponse *res)
+ Z_ItemOrder *io,
+ Z_ExtendedServicesResponse *res)
{
yaz_log (YLOG_LOG, "MyServer::ill_service");
}
void MyUpdate::update_service (Z_ExtendedServicesRequest *req,
- Z_IUUpdate *io,
- Z_ExtendedServicesResponse *res)
+ Z_IUUpdate *io,
+ Z_ExtendedServicesResponse *res)
{
yaz_log (YLOG_LOG, "MyServer::update_service (v1.1)");
}
void MyUpdate::update_service0 (Z_ExtendedServicesRequest *req,
- Z_IU0Update *io,
- Z_ExtendedServicesResponse *res)
+ Z_IU0Update *io,
+ Z_ExtendedServicesResponse *res)
{
yaz_log (YLOG_LOG, "MyServer::update_service (v1.0)");
}
int MyRetrieval::sr_init (Z_InitRequest *initRequest,
- Z_InitResponse *initResponse)
+ Z_InitResponse *initResponse)
{
yaz_log (YLOG_LOG, "MyServer::sr_init");
return 1;
}
void MyRetrieval::sr_search (Z_SearchRequest *searchRequest,
- Z_SearchResponse *searchResponse)
+ Z_SearchResponse *searchResponse)
{
yaz_log (YLOG_LOG, "MyServer::recv_Z_search");
if (searchRequest->query->which == Z_Query_type_1)
{
- Z_RPNStructure *s = searchRequest->query->u.type_1->RPNStructure;
- if (s->which == Z_RPNStructure_simple &&
- s->u.simple->which == Z_Operand_APT &&
- s->u.simple->u.attributesPlusTerm->term->which == Z_Term_general)
- {
- Odr_oct *term = s->u.simple->u.attributesPlusTerm->term->u.general;
- char *str = (char *) odr_malloc (odr_encode(), term->len+1);
- if (term->len)
- memcpy (str, term->buf, term->len);
- str[term->len] = '\0';
- *searchResponse->resultCount = atoi(str);
- }
+ Z_RPNStructure *s = searchRequest->query->u.type_1->RPNStructure;
+ if (s->which == Z_RPNStructure_simple &&
+ s->u.simple->which == Z_Operand_APT &&
+ s->u.simple->u.attributesPlusTerm->term->which == Z_Term_general)
+ {
+ Odr_oct *term = s->u.simple->u.attributesPlusTerm->term->u.general;
+ char *str = (char *) odr_malloc (odr_encode(), term->len+1);
+ if (term->len)
+ memcpy (str, term->buf, term->len);
+ str[term->len] = '\0';
+ *searchResponse->resultCount = atoi(str);
+ }
}
}
void MyRetrieval::sr_present (Z_PresentRequest *presentRequest,
- Z_PresentResponse *presentResponse)
+ Z_PresentResponse *presentResponse)
{
yaz_log (YLOG_LOG, "MyServer::recv_Z_present");
}
void MyRetrieval::sr_record (const char *resultSetName,
- int position,
- int *format,
- Z_RecordComposition *comp,
- Z_NamePlusRecord *namePlusRecord,
- Z_Records *records)
+ int position,
+ int *format,
+ Z_RecordComposition *comp,
+ Z_NamePlusRecord *namePlusRecord,
+ Z_Records *records)
{
yaz_log (YLOG_LOG, "MyServer::recv_Z_record");
const char *rec = get_record(position);
if (rec)
- create_databaseRecord (odr_encode(), namePlusRecord, 0,
- VAL_USMARC, rec, strlen(rec));
+ create_databaseRecord (odr_encode(), namePlusRecord, 0,
+ VAL_USMARC, rec, strlen(rec));
else
- create_surrogateDiagnostics(odr_encode(), namePlusRecord, 0,
- YAZ_BIB1_PRESENT_REQUEST_OUT_OF_RANGE, 0);
+ create_surrogateDiagnostics(odr_encode(), namePlusRecord, 0,
+ YAZ_BIB1_PRESENT_REQUEST_OUT_OF_RANGE, 0);
}
MyServer::~MyServer()
while ((ret = options("a:v:T", argv, argc, &arg)) != -2)
{
- switch (ret)
- {
- case 0:
- addr = xstrdup(arg);
- break;
- case 'a':
- apdu_log = xstrdup(arg);
- break;
- case 'v':
- yaz_log_init_level (yaz_log_mask_str(arg));
- break;
- case 'T':
- thread_flag = 1;
- break;
- default:
- usage(prog);
- return 1;
- }
+ switch (ret)
+ {
+ case 0:
+ addr = xstrdup(arg);
+ break;
+ case 'a':
+ apdu_log = xstrdup(arg);
+ break;
+ case 'v':
+ yaz_log_init_level (yaz_log_mask_str(arg));
+ break;
+ case 'T':
+ thread_flag = 1;
+ break;
+ default:
+ usage(prog);
+ return 1;
+ }
}
#if YAZ_POSIX_THREADS
if (thread_flag)
- my_PDU_Assoc = new PDU_AssocThread(&mySocketManager);
+ my_PDU_Assoc = new PDU_AssocThread(&mySocketManager);
else
- my_PDU_Assoc = new PDU_Assoc(&mySocketManager);
+ my_PDU_Assoc = new PDU_Assoc(&mySocketManager);
#else
my_PDU_Assoc = new PDU_Assoc(&mySocketManager);
#endif
z->server(addr);
if (apdu_log)
{
- yaz_log (YLOG_LOG, "set_APDU_log %s", apdu_log);
- z->set_APDU_log(apdu_log);
+ yaz_log (YLOG_LOG, "set_APDU_log %s", apdu_log);
+ z->set_APDU_log(apdu_log);
}
while (mySocketManager.processEvent() > 0)
- ;
+ ;
delete z;
return 0;
}
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+
* Copyright (c) 1998-2004, Index Data.
* See the file LICENSE for details.
*
- * $Id: yaz-pdu-assoc-thread.cpp,v 1.11 2005-06-08 13:28:06 adam Exp $
+ * $Id: yaz-pdu-assoc-thread.cpp,v 1.12 2005-06-25 15:53:19 adam Exp $
*/
#ifdef WIN32
yaz_log (YLOG_LOG, "thread started");
while (s->processEvent() > 0)
- ;
+ ;
yaz_log (YLOG_LOG, "thread finished");
#ifdef WIN32
#else
/// Clone PDU Observer
new_observable->m_PDU_Observer =
- m_PDU_Observer->sessionNotify(new_observable, cs_fileno(cs));
+ m_PDU_Observer->sessionNotify(new_observable, cs_fileno(cs));
#ifdef WIN32
long t_id;
t_id = _beginthread (events, 0, socket_observable);
int id = pthread_create (&tid, 0, events, socket_observable);
if (id)
- yaz_log (YLOG_ERRNO|YLOG_FATAL, "pthread_create returned id=%d", id);
+ yaz_log (YLOG_ERRNO|YLOG_FATAL, "pthread_create returned id=%d", id);
else
- pthread_detach (tid);
+ pthread_detach (tid);
#endif
}
#endif
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+
* Copyright (c) 1998-2004, Index Data.
* See the file LICENSE for details.
*
- * $Id: yaz-pdu-assoc.cpp,v 1.42 2005-06-21 21:30:24 adam Exp $
+ * $Id: yaz-pdu-assoc.cpp,v 1.43 2005-06-25 15:53:19 adam Exp $
*/
#include <assert.h>
}
PDU_Assoc::PDU_Assoc(ISocketObservable *socketObservable,
- COMSTACK cs)
+ COMSTACK cs)
{
init(socketObservable);
m_cs = cs;
unsigned mask = 0;
if (cs->io_pending & CS_WANT_WRITE)
- mask |= SOCKET_OBSERVE_WRITE;
+ mask |= SOCKET_OBSERVE_WRITE;
if (cs->io_pending & CS_WANT_READ)
- mask |= SOCKET_OBSERVE_READ;
+ mask |= SOCKET_OBSERVE_READ;
m_socketObservable->addObserver(cs_fileno(cs), this);
if (!mask)
{
- yaz_log (m_log, "new PDU_Assoc. Ready");
- m_state = Ready;
- flush_PDU();
+ yaz_log (m_log, "new PDU_Assoc. Ready");
+ m_state = Ready;
+ flush_PDU();
}
else
{
- yaz_log (m_log, "new PDU_Assoc. Accepting");
- // assume comstack is accepting...
- m_state = Accepting;
- m_socketObservable->addObserver(cs_fileno(cs), this);
- yaz_log(m_log, "maskObserver 1");
- m_socketObservable->maskObserver(this,
- mask |SOCKET_OBSERVE_EXCEPT);
+ yaz_log (m_log, "new PDU_Assoc. Accepting");
+ // assume comstack is accepting...
+ m_state = Accepting;
+ m_socketObservable->addObserver(cs_fileno(cs), this);
+ yaz_log(m_log, "maskObserver 1");
+ m_socketObservable->maskObserver(this,
+ mask |SOCKET_OBSERVE_EXCEPT);
}
}
void PDU_Assoc::socketNotify(int event)
{
yaz_log (m_log, "PDU_Assoc::socketNotify p=%p state=%d event = %d",
- this, m_state, event);
+ this, m_state, event);
if (event & SOCKET_OBSERVE_EXCEPT)
{
close();
switch (m_state)
{
case Accepting:
- if (!cs_accept (m_cs))
- {
- yaz_log (m_log, "PDU_Assoc::cs_accept failed");
- m_cs = 0;
- close();
- m_PDU_Observer->failNotify();
- }
- else
- {
- unsigned mask = 0;
- if (m_cs->io_pending & CS_WANT_WRITE)
- mask |= SOCKET_OBSERVE_WRITE;
- if (m_cs->io_pending & CS_WANT_READ)
- mask |= SOCKET_OBSERVE_READ;
- if (!mask)
- { // accept is complete. turn to ready state and write if needed
- m_state = Ready;
- flush_PDU();
- }
- else
- { // accept still incomplete.
- yaz_log(m_log, "maskObserver 2");
- m_socketObservable->maskObserver(this,
- mask|SOCKET_OBSERVE_EXCEPT);
- }
- }
- break;
+ if (!cs_accept (m_cs))
+ {
+ yaz_log (m_log, "PDU_Assoc::cs_accept failed");
+ m_cs = 0;
+ close();
+ m_PDU_Observer->failNotify();
+ }
+ else
+ {
+ unsigned mask = 0;
+ if (m_cs->io_pending & CS_WANT_WRITE)
+ mask |= SOCKET_OBSERVE_WRITE;
+ if (m_cs->io_pending & CS_WANT_READ)
+ mask |= SOCKET_OBSERVE_READ;
+ if (!mask)
+ { // accept is complete. turn to ready state and write if needed
+ m_state = Ready;
+ flush_PDU();
+ }
+ else
+ { // accept still incomplete.
+ yaz_log(m_log, "maskObserver 2");
+ m_socketObservable->maskObserver(this,
+ mask|SOCKET_OBSERVE_EXCEPT);
+ }
+ }
+ break;
case Connecting:
- if (event & SOCKET_OBSERVE_READ &&
- event & SOCKET_OBSERVE_WRITE)
- {
- // For Unix: if both read and write is set, then connect failed.
- close();
- m_PDU_Observer->failNotify();
- }
- else
- {
- yaz_log (m_log, "cs_rcvconnect");
- int res = cs_rcvconnect (m_cs);
- if (res == 1)
- {
- unsigned mask = SOCKET_OBSERVE_EXCEPT;
- if (m_cs->io_pending & CS_WANT_WRITE)
- mask |= SOCKET_OBSERVE_WRITE;
- if (m_cs->io_pending & CS_WANT_READ)
- mask |= SOCKET_OBSERVE_READ;
- yaz_log(m_log, "maskObserver 3");
- m_socketObservable->maskObserver(this, mask);
- }
- else
- {
- m_state = Ready;
- if (m_PDU_Observer)
- m_PDU_Observer->connectNotify();
- flush_PDU();
- }
- }
- break;
+ if (event & SOCKET_OBSERVE_READ &&
+ event & SOCKET_OBSERVE_WRITE)
+ {
+ // For Unix: if both read and write is set, then connect failed.
+ close();
+ m_PDU_Observer->failNotify();
+ }
+ else
+ {
+ yaz_log (m_log, "cs_rcvconnect");
+ int res = cs_rcvconnect (m_cs);
+ if (res == 1)
+ {
+ unsigned mask = SOCKET_OBSERVE_EXCEPT;
+ if (m_cs->io_pending & CS_WANT_WRITE)
+ mask |= SOCKET_OBSERVE_WRITE;
+ if (m_cs->io_pending & CS_WANT_READ)
+ mask |= SOCKET_OBSERVE_READ;
+ yaz_log(m_log, "maskObserver 3");
+ m_socketObservable->maskObserver(this, mask);
+ }
+ else
+ {
+ m_state = Ready;
+ if (m_PDU_Observer)
+ m_PDU_Observer->connectNotify();
+ flush_PDU();
+ }
+ }
+ break;
case Listen:
- if (event & SOCKET_OBSERVE_READ)
- {
- int res;
- COMSTACK new_line;
-
- if ((res = cs_listen(m_cs, 0, 0)) == 1)
- return;
- if (res < 0)
- {
- yaz_log(YLOG_FATAL|YLOG_ERRNO, "cs_listen failed");
- return;
- }
- if (!(new_line = cs_accept(m_cs)))
- return;
- /* 1. create socket-manager
+ if (event & SOCKET_OBSERVE_READ)
+ {
+ int res;
+ COMSTACK new_line;
+
+ if ((res = cs_listen(m_cs, 0, 0)) == 1)
+ return;
+ if (res < 0)
+ {
+ yaz_log(YLOG_FATAL|YLOG_ERRNO, "cs_listen failed");
+ return;
+ }
+ if (!(new_line = cs_accept(m_cs)))
+ return;
+ /* 1. create socket-manager
2. create pdu-assoc
3. create top-level object
setup observer for child fileid in pdu-assoc
4. start thread
- */
- yaz_log (m_log, "new session: parent fd=%d child fd=%d",
- cs_fileno(m_cs), cs_fileno(new_line));
- childNotify (new_line);
- }
- break;
+ */
+ yaz_log (m_log, "new session: parent fd=%d child fd=%d",
+ cs_fileno(m_cs), cs_fileno(new_line));
+ childNotify (new_line);
+ }
+ break;
case Writing:
if (event & (SOCKET_OBSERVE_READ|SOCKET_OBSERVE_WRITE))
flush_PDU();
break;
case Ready:
- if (event & (SOCKET_OBSERVE_READ|SOCKET_OBSERVE_WRITE))
- {
- do
- {
- int res = cs_get (m_cs, &m_input_buf, &m_input_len);
- if (res == 1)
+ if (event & (SOCKET_OBSERVE_READ|SOCKET_OBSERVE_WRITE))
+ {
+ do
+ {
+ int res = cs_get (m_cs, &m_input_buf, &m_input_len);
+ if (res == 1)
{
unsigned mask = SOCKET_OBSERVE_EXCEPT;
if (m_cs->io_pending & CS_WANT_WRITE)
mask |= SOCKET_OBSERVE_WRITE;
if (m_cs->io_pending & CS_WANT_READ)
mask |= SOCKET_OBSERVE_READ;
- yaz_log(m_log, "maskObserver 4");
- m_socketObservable->maskObserver(this, mask);
- return;
+ yaz_log(m_log, "maskObserver 4");
+ m_socketObservable->maskObserver(this, mask);
+ return;
+ }
+ else if (res <= 0)
+ {
+ yaz_log (m_log, "PDU_Assoc::Connection closed by peer");
+ close();
+ if (m_PDU_Observer)
+ m_PDU_Observer->failNotify(); // problem here..
+ return;
}
- else if (res <= 0)
- {
- yaz_log (m_log, "PDU_Assoc::Connection closed by peer");
- close();
- if (m_PDU_Observer)
- m_PDU_Observer->failNotify(); // problem here..
- return;
- }
- // lock it, so we know if recv_PDU deletes it.
- int destroyed = 0;
- m_destroyed = &destroyed;
+ // lock it, so we know if recv_PDU deletes it.
+ int destroyed = 0;
+ m_destroyed = &destroyed;
- if (!m_PDU_Observer)
- return;
+ if (!m_PDU_Observer)
+ return;
#if 0
- PDU_Queue **pq = &m_queue_in;
- while (*pq)
- pq = &(*pq)->m_next;
-
- *pq = new PDU_Queue(m_input_buf, res);
+ PDU_Queue **pq = &m_queue_in;
+ while (*pq)
+ pq = &(*pq)->m_next;
+
+ *pq = new PDU_Queue(m_input_buf, res);
#else
- m_PDU_Observer->recv_PDU(m_input_buf, res);
+ m_PDU_Observer->recv_PDU(m_input_buf, res);
#endif
- if (destroyed) // it really was destroyed, return now.
- return;
+ if (destroyed) // it really was destroyed, return now.
+ return;
m_destroyed = 0;
- } while (m_cs && cs_more (m_cs));
- if (m_cs && m_state == Ready)
+ } while (m_cs && cs_more (m_cs));
+ if (m_cs && m_state == Ready)
{
- yaz_log(m_log, "maskObserver 5");
- m_socketObservable->maskObserver(this,
- SOCKET_OBSERVE_EXCEPT|
- SOCKET_OBSERVE_READ);
- }
- }
- break;
+ yaz_log(m_log, "maskObserver 5");
+ m_socketObservable->maskObserver(this,
+ SOCKET_OBSERVE_EXCEPT|
+ SOCKET_OBSERVE_READ);
+ }
+ }
+ break;
case Closed:
- yaz_log (m_log, "CLOSING state=%d event was %d", m_state, event);
- close();
- m_PDU_Observer->failNotify();
- break;
+ yaz_log (m_log, "CLOSING state=%d event was %d", m_state, event);
+ close();
+ m_PDU_Observer->failNotify();
+ break;
default:
- yaz_log (m_log, "Unknown state=%d event was %d", m_state, event);
- close();
- m_PDU_Observer->failNotify();
+ yaz_log (m_log, "Unknown state=%d event was %d", m_state, event);
+ close();
+ m_PDU_Observer->failNotify();
}
}
{
PDU_Assoc *ch;
for (ch = m_children; ch; ch = ch->m_next)
- ch->close();
+ ch->close();
m_socketObservable->deleteObserver(this);
m_state = Closed;
if (m_cs)
{
- yaz_log (m_log, "PDU_Assoc::close fd=%d", cs_fileno(m_cs));
- cs_close (m_cs);
+ yaz_log (m_log, "PDU_Assoc::close fd=%d", cs_fileno(m_cs));
+ cs_close (m_cs);
}
m_cs = 0;
while (m_queue_out)
{
- PDU_Queue *q_this = m_queue_out;
- m_queue_out = m_queue_out->m_next;
- delete q_this;
+ PDU_Queue *q_this = m_queue_out;
+ m_queue_out = m_queue_out->m_next;
+ delete q_this;
}
xfree (m_input_buf);
m_input_buf = 0;
close();
if (m_destroyed)
- *m_destroyed = 1;
+ *m_destroyed = 1;
PDU_Assoc **c;
// delete from parent's child list (if any)
if (m_parent)
{
- c = &m_parent->m_children;
- while (*c != this)
- {
- assert (*c);
- c = &(*c)->m_next;
- }
- *c = (*c)->m_next;
+ c = &m_parent->m_children;
+ while (*c != this)
+ {
+ assert (*c);
+ c = &(*c)->m_next;
+ }
+ *c = (*c)->m_next;
}
// delete all children ...
c = &m_children;
while (*c)
{
- PDU_Assoc *here = *c;
- *c = (*c)->m_next;
- here->m_parent = 0;
- delete here;
+ PDU_Assoc *here = *c;
+ *c = (*c)->m_next;
+ here->m_parent = 0;
+ delete here;
}
yaz_log (m_log, "PDU_Assoc::destroy this=%p", this);
}
if (m_state != Ready && m_state != Writing)
{
yaz_log (m_log, "YAZ_PDU_Assoc::flush_PDU, not ready");
- return 1;
+ return 1;
}
PDU_Queue *q = m_queue_out;
if (!q)
{
- m_state = Ready;
- yaz_log (m_log, "YAZ_PDU_Assoc::flush_PDU queue empty");
- yaz_log(m_log, "maskObserver 6");
- m_socketObservable->maskObserver(this, SOCKET_OBSERVE_READ|
- SOCKET_OBSERVE_WRITE|
- SOCKET_OBSERVE_EXCEPT);
+ m_state = Ready;
+ yaz_log (m_log, "YAZ_PDU_Assoc::flush_PDU queue empty");
+ yaz_log(m_log, "maskObserver 6");
+ m_socketObservable->maskObserver(this, SOCKET_OBSERVE_READ|
+ SOCKET_OBSERVE_WRITE|
+ SOCKET_OBSERVE_EXCEPT);
return 0;
}
r = cs_put (m_cs, q->m_buf, q->m_len);
{
yaz_log (m_log, "PDU_Assoc::flush_PDU cs_put failed");
close();
- m_PDU_Observer->failNotify();
+ m_PDU_Observer->failNotify();
return r;
}
if (r == 1)
if (m_cs->io_pending & CS_WANT_READ)
mask |= SOCKET_OBSERVE_READ;
- mask |= SOCKET_OBSERVE_WRITE;
- yaz_log(m_log, "maskObserver 7");
- m_socketObservable->maskObserver(this, mask);
+ mask |= SOCKET_OBSERVE_WRITE;
+ yaz_log(m_log, "maskObserver 7");
+ m_socketObservable->maskObserver(this, mask);
yaz_log (m_log, "PDU_Assoc::flush_PDU cs_put %d bytes fd=%d (inc)",
- q->m_len, cs_fileno(m_cs));
+ q->m_len, cs_fileno(m_cs));
return r;
}
yaz_log (m_log, "PDU_Assoc::flush_PDU cs_put %d bytes", q->m_len);
if (!m_queue_out)
{
m_state = Ready;
- yaz_log(m_log, "maskObserver 8");
- m_socketObservable->maskObserver(this, SOCKET_OBSERVE_READ|
- SOCKET_OBSERVE_EXCEPT);
+ yaz_log(m_log, "maskObserver 8");
+ m_socketObservable->maskObserver(this, SOCKET_OBSERVE_READ|
+ SOCKET_OBSERVE_EXCEPT);
}
return r;
}
if (!m_cs)
{
- yaz_log (m_log, "PDU_Assoc::send_PDU failed, m_cs == 0");
+ yaz_log (m_log, "PDU_Assoc::send_PDU failed, m_cs == 0");
return -1;
}
while (*pq)
if (is_idle)
return flush_PDU ();
else
- yaz_log (m_log, "PDU_Assoc::cannot send_PDU fd=%d",
- cs_fileno(m_cs));
+ yaz_log (m_log, "PDU_Assoc::cannot send_PDU fd=%d",
+ cs_fileno(m_cs));
return 0;
}
m_socketObservable->addObserver(cs_fileno(m_cs), this);
yaz_log(m_log, "maskObserver 9");
m_socketObservable->maskObserver(this, SOCKET_OBSERVE_READ|
- SOCKET_OBSERVE_EXCEPT);
+ SOCKET_OBSERVE_EXCEPT);
yaz_log (m_log, "PDU_Assoc::listen ok fd=%d", cs_fileno(m_cs));
m_state = Listen;
return 0;
void *ap;
m_cs = comstack(addr, &ap);
if (!m_cs)
- return -1;
+ return -1;
int res = cs_connect (m_cs, ap);
yaz_log (m_log, "PDU_Assoc::connect fd=%d res=%d", cs_fileno(m_cs),
- res);
+ res);
m_socketObservable->addObserver(cs_fileno(m_cs), this);
if (res == 0)
{ // Connect complete
- m_state = Connecting;
- unsigned mask = SOCKET_OBSERVE_EXCEPT;
- mask |= SOCKET_OBSERVE_WRITE;
- mask |= SOCKET_OBSERVE_READ;
- yaz_log(m_log, "maskObserver 11");
- m_socketObservable->maskObserver(this, mask);
+ m_state = Connecting;
+ unsigned mask = SOCKET_OBSERVE_EXCEPT;
+ mask |= SOCKET_OBSERVE_WRITE;
+ mask |= SOCKET_OBSERVE_READ;
+ yaz_log(m_log, "maskObserver 11");
+ m_socketObservable->maskObserver(this, mask);
}
else if (res > 0)
{ // Connect pending
- m_state = Connecting;
- unsigned mask = SOCKET_OBSERVE_EXCEPT;
- if (m_cs->io_pending & CS_WANT_WRITE)
- mask |= SOCKET_OBSERVE_WRITE;
- if (m_cs->io_pending & CS_WANT_READ)
- mask |= SOCKET_OBSERVE_READ;
- yaz_log(m_log, "maskObserver 11");
- m_socketObservable->maskObserver(this, mask);
+ m_state = Connecting;
+ unsigned mask = SOCKET_OBSERVE_EXCEPT;
+ if (m_cs->io_pending & CS_WANT_WRITE)
+ mask |= SOCKET_OBSERVE_WRITE;
+ if (m_cs->io_pending & CS_WANT_READ)
+ mask |= SOCKET_OBSERVE_READ;
+ yaz_log(m_log, "maskObserver 11");
+ m_socketObservable->maskObserver(this, mask);
}
else
{ // Connect failed immediately
- // Since m_state is Closed we can distinguish this case from
+ // Since m_state is Closed we can distinguish this case from
// normal connect in socketNotify handler
- yaz_log(m_log, "maskObserver 12");
- m_socketObservable->maskObserver(this, SOCKET_OBSERVE_WRITE|
- SOCKET_OBSERVE_EXCEPT);
+ yaz_log(m_log, "maskObserver 12");
+ m_socketObservable->maskObserver(this, SOCKET_OBSERVE_WRITE|
+ SOCKET_OBSERVE_EXCEPT);
}
return 0;
}
void PDU_Assoc::childNotify(COMSTACK cs)
{
PDU_Assoc *new_observable =
- new PDU_Assoc (m_socketObservable, cs);
+ new PDU_Assoc (m_socketObservable, cs);
new_observable->m_next = m_children;
m_children = new_observable;
// Clone PDU Observer
new_observable->m_PDU_Observer = m_PDU_Observer->sessionNotify
- (new_observable, cs_fileno(cs));
+ (new_observable, cs_fileno(cs));
}
const char*PDU_Assoc::getpeername()
{
if (!m_cs)
- return 0;
+ return 0;
return cs_addrstr(m_cs);
}
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+
* Copyright (c) 1998-2005, Index Data.
* See the file LICENSE for details.
*
- * $Id: yaz-socket-manager.cpp,v 1.34 2005-06-21 17:36:46 adam Exp $
+ * $Id: yaz-socket-manager.cpp,v 1.35 2005-06-25 15:53:19 adam Exp $
*/
#ifdef WIN32
#include <winsock.h>
SocketEntry **se;
for (se = &m_observers; *se; se = &(*se)->next)
- if ((*se)->observer == observer)
- break;
+ if ((*se)->observer == observer)
+ break;
return se;
}
se = *lookupObserver(observer);
if (!se)
{
- se = new SocketEntry;
- se->next= m_observers;
- m_observers = se;
- se->observer = observer;
+ se = new SocketEntry;
+ se->next= m_observers;
+ m_observers = se;
+ se->observer = observer;
}
se->fd = fd;
se->mask = 0;
SocketEntry **se = lookupObserver(observer);
if (*se)
{
- removeEvent (observer);
- SocketEntry *se_tmp = *se;
- *se = (*se)->next;
- delete se_tmp;
+ removeEvent (observer);
+ SocketEntry *se_tmp = *se;
+ *se = (*se)->next;
+ delete se_tmp;
}
}
while (se)
{
- SocketEntry *se_next = se->next;
- delete se;
- se = se_next;
+ SocketEntry *se_next = se->next;
+ delete se;
+ se = se_next;
}
m_observers = 0;
}
SocketEntry *se;
yaz_log(m_log, "obs=%p read=%d write=%d except=%d", observer,
- mask & SOCKET_OBSERVE_READ,
- mask & SOCKET_OBSERVE_WRITE,
- mask & SOCKET_OBSERVE_EXCEPT);
+ mask & SOCKET_OBSERVE_READ,
+ mask & SOCKET_OBSERVE_WRITE,
+ mask & SOCKET_OBSERVE_EXCEPT);
se = *lookupObserver(observer);
if (se)
- se->mask = mask;
+ se->mask = mask;
}
void SocketManager::timeoutObserver(ISocketObserver *observer,
- int timeout)
+ int timeout)
{
SocketEntry *se;
se = *lookupObserver(observer);
if (se)
- se->timeout = timeout;
+ se->timeout = timeout;
}
int SocketManager::processEvent()
yaz_log (m_log, "SocketManager::processEvent manager=%p", this);
if (event)
{
- event->observer->socketNotify(event->event);
- delete event;
- return 1;
+ event->observer->socketNotify(event->event);
+ delete event;
+ return 1;
}
fd_set in, out, except;
time_t now = time(0);
for (p = m_observers; p; p = p->next)
{
- int fd = p->fd;
- if (p->mask)
- no++;
- if (p->mask & SOCKET_OBSERVE_READ)
+ int fd = p->fd;
+ if (p->mask)
+ no++;
+ if (p->mask & SOCKET_OBSERVE_READ)
{
yaz_log (m_log, "SocketManager::select fd=%d read", fd);
- FD_SET(fd, &in);
+ FD_SET(fd, &in);
}
- if (p->mask & SOCKET_OBSERVE_WRITE)
+ if (p->mask & SOCKET_OBSERVE_WRITE)
{
yaz_log (m_log, "SocketManager::select fd=%d write", fd);
- FD_SET(fd, &out);
+ FD_SET(fd, &out);
}
- if (p->mask & SOCKET_OBSERVE_EXCEPT)
+ if (p->mask & SOCKET_OBSERVE_EXCEPT)
{
yaz_log (m_log, "SocketManager::select fd=%d except", fd);
- FD_SET(fd, &except);
+ FD_SET(fd, &except);
}
- if (fd > max)
- max = fd;
- if (p->timeout > 0 ||
- (p->timeout == 0 && (p->mask & SOCKET_OBSERVE_WRITE) == 0))
- {
- int timeout_this;
- timeout_this = p->timeout;
- if (p->last_activity)
- timeout_this -= now - p->last_activity;
- else
- p->last_activity = now;
- if (timeout_this < 0 || timeout_this > 2147483646)
- timeout_this = 0;
- if (timeout == -1 || timeout_this < timeout)
- timeout = timeout_this;
+ if (fd > max)
+ max = fd;
+ if (p->timeout > 0 ||
+ (p->timeout == 0 && (p->mask & SOCKET_OBSERVE_WRITE) == 0))
+ {
+ int timeout_this;
+ timeout_this = p->timeout;
+ if (p->last_activity)
+ timeout_this -= now - p->last_activity;
+ else
+ p->last_activity = now;
+ if (timeout_this < 0 || timeout_this > 2147483646)
+ timeout_this = 0;
+ if (timeout == -1 || timeout_this < timeout)
+ timeout = timeout_this;
p->timeout_this = timeout_this;
yaz_log (m_log, "SocketManager::select timeout_this=%d",
p->timeout_this);
- }
- else
- p->timeout_this = -1;
+ }
+ else
+ p->timeout_this = -1;
}
if (!no)
{
- yaz_log (m_log, "no pending events return 0");
- if (!m_observers)
- yaz_log (m_log, "no observers");
- return 0;
+ yaz_log (m_log, "no pending events return 0");
+ if (!m_observers)
+ yaz_log (m_log, "no observers");
+ return 0;
}
struct timeval to;
no, timeout);
int pass = 0;
while ((res = select(max + 1, &in, &out, &except,
- timeout== -1 ? 0 : &to)) < 0)
- if (errno != EINTR)
- {
- yaz_log(YLOG_ERRNO|YLOG_WARN, "select");
- yaz_log(YLOG_WARN, "errno=%d max=%d timeout=%d",
- errno, max, timeout);
- if (++pass > 10)
- return -1;
- }
+ timeout== -1 ? 0 : &to)) < 0)
+ if (errno != EINTR)
+ {
+ yaz_log(YLOG_ERRNO|YLOG_WARN, "select");
+ yaz_log(YLOG_WARN, "errno=%d max=%d timeout=%d",
+ errno, max, timeout);
+ if (++pass > 10)
+ return -1;
+ }
yaz_log(m_log, "select returned res=%d", res);
now = time(0);
for (p = m_observers; p; p = p->next)
{
- int fd = p->fd;
- int mask = 0;
- if (FD_ISSET(fd, &in))
- mask |= SOCKET_OBSERVE_READ;
+ int fd = p->fd;
+ int mask = 0;
+ if (FD_ISSET(fd, &in))
+ mask |= SOCKET_OBSERVE_READ;
- if (FD_ISSET(fd, &out))
- mask |= SOCKET_OBSERVE_WRITE;
+ if (FD_ISSET(fd, &out))
+ mask |= SOCKET_OBSERVE_WRITE;
- if (FD_ISSET(fd, &except))
- mask |= SOCKET_OBSERVE_EXCEPT;
-
- if (mask)
- {
- SocketEvent *event = new SocketEvent;
- p->last_activity = now;
- event->observer = p->observer;
- event->event = mask;
- putEvent (event);
+ if (FD_ISSET(fd, &except))
+ mask |= SOCKET_OBSERVE_EXCEPT;
+
+ if (mask)
+ {
+ SocketEvent *event = new SocketEvent;
+ p->last_activity = now;
+ event->observer = p->observer;
+ event->event = mask;
+ putEvent (event);
- yaz_log (m_log, "putEvent I/O mask=%d", mask);
- }
- else if (res == 0 && p->timeout_this == timeout)
- {
- SocketEvent *event = new SocketEvent;
+ yaz_log (m_log, "putEvent I/O mask=%d", mask);
+ }
+ else if (res == 0 && p->timeout_this == timeout)
+ {
+ SocketEvent *event = new SocketEvent;
assert (p->last_activity);
- yaz_log (m_log, "putEvent timeout fd=%d, now = %ld last_activity=%ld timeout=%d",
+ yaz_log (m_log, "putEvent timeout fd=%d, now = %ld last_activity=%ld timeout=%d",
p->fd, now, p->last_activity, p->timeout);
- p->last_activity = now;
- event->observer = p->observer;
- event->event = SOCKET_OBSERVE_TIMEOUT;
- putEvent (event);
- }
+ p->last_activity = now;
+ event->observer = p->observer;
+ event->event = SOCKET_OBSERVE_TIMEOUT;
+ putEvent (event);
+ }
}
if ((event = getEvent()))
{
- event->observer->socketNotify(event->event);
- delete event;
- return 1;
+ event->observer->socketNotify(event->event);
+ delete event;
+ return 1;
}
yaz_log(YLOG_WARN, "unhandled event in processEvent res=%d", res);
return 1;
// put in back of queue
if (m_queue_back)
{
- m_queue_back->prev = event;
- assert (m_queue_front);
+ m_queue_back->prev = event;
+ assert (m_queue_front);
}
else
{
- assert (!m_queue_front);
- m_queue_front = event;
+ assert (!m_queue_front);
+ m_queue_front = event;
}
event->next = m_queue_back;
event->prev = 0;
// get from front of queue
SocketEvent *event = m_queue_front;
if (!event)
- return 0;
+ return 0;
assert (m_queue_back);
m_queue_front = event->prev;
if (m_queue_front)
{
- assert (m_queue_back);
- m_queue_front->next = 0;
+ assert (m_queue_back);
+ m_queue_front->next = 0;
}
else
- m_queue_back = 0;
+ m_queue_back = 0;
return event;
}
SocketEvent *ev = m_queue_back;
while (ev)
{
- SocketEvent *ev_next = ev->next;
- if (observer == ev->observer)
- {
- if (ev->prev)
- ev->prev->next = ev->next;
- else
- m_queue_back = ev->next;
- if (ev->next)
- ev->next->prev = ev->prev;
- else
- m_queue_front = ev->prev;
- delete ev;
- }
- ev = ev_next;
+ SocketEvent *ev_next = ev->next;
+ if (observer == ev->observer)
+ {
+ if (ev->prev)
+ ev->prev->next = ev->next;
+ else
+ m_queue_back = ev->next;
+ if (ev->next)
+ ev->next->prev = ev->prev;
+ else
+ m_queue_front = ev->prev;
+ delete ev;
+ }
+ ev = ev_next;
}
}
{
deleteObservers();
}
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+
* Copyright (c) 1998-2004, Index Data.
* See the file LICENSE for details.
*
- * $Id: yaz-z-assoc.cpp,v 1.37 2005-06-08 13:28:06 adam Exp $
+ * $Id: yaz-z-assoc.cpp,v 1.38 2005-06-25 15:53:19 adam Exp $
*/
#include <assert.h>
{
if (m_APDU_file && m_APDU_file != stderr)
{
- fclose (m_APDU_file);
- m_APDU_file = 0;
+ fclose (m_APDU_file);
+ m_APDU_file = 0;
}
delete [] m_APDU_fname;
m_APDU_fname = 0;
if (fname)
{
- m_APDU_fname = new char[strlen(fname)+1];
- strcpy (m_APDU_fname, fname);
- if (!strcmp(fname, "-"))
- m_APDU_file = stderr;
- else if (*fname == '\0')
- m_APDU_file = 0;
- else
- m_APDU_file = fopen (fname, "a");
- odr_setprint(m_odr_print, m_APDU_file);
+ m_APDU_fname = new char[strlen(fname)+1];
+ strcpy (m_APDU_fname, fname);
+ if (!strcmp(fname, "-"))
+ m_APDU_file = stderr;
+ else if (*fname == '\0')
+ m_APDU_file = 0;
+ else
+ m_APDU_file = fopen (fname, "a");
+ odr_setprint(m_odr_print, m_APDU_file);
}
}
Z_GDU *apdu = decode_GDU (buf, len);
if (apdu)
{
- recv_GDU (apdu, len);
+ recv_GDU (apdu, len);
}
else
{
- close();
- failNotify();
+ close();
+ failNotify();
}
}
Z_APDU *apdu = zget_APDU(m_odr_out, type);
if (apdu->which == Z_APDU_initRequest)
{
- Z_InitRequest * p = apdu->u.initRequest;
- char *newName = (char*) odr_malloc(m_odr_out, 50);
- strcpy (newName, p->implementationName);
- strcat (newName, " YAZ++");
- p->implementationName = newName;
+ Z_InitRequest * p = apdu->u.initRequest;
+ char *newName = (char*) odr_malloc(m_odr_out, 50);
+ strcpy (newName, p->implementationName);
+ strcat (newName, " YAZ++");
+ p->implementationName = newName;
}
return apdu;
}
switch (apdu->which)
{
case Z_APDU_initRequest:
- return &apdu->u.initRequest->referenceId;
+ return &apdu->u.initRequest->referenceId;
case Z_APDU_initResponse:
- return &apdu->u.initResponse->referenceId;
+ return &apdu->u.initResponse->referenceId;
case Z_APDU_searchRequest:
- return &apdu->u.searchRequest->referenceId;
+ return &apdu->u.searchRequest->referenceId;
case Z_APDU_searchResponse:
- return &apdu->u.searchResponse->referenceId;
+ return &apdu->u.searchResponse->referenceId;
case Z_APDU_presentRequest:
- return &apdu->u.presentRequest->referenceId;
+ return &apdu->u.presentRequest->referenceId;
case Z_APDU_presentResponse:
- return &apdu->u.presentResponse->referenceId;
+ return &apdu->u.presentResponse->referenceId;
case Z_APDU_deleteResultSetRequest:
- return &apdu->u.deleteResultSetRequest->referenceId;
+ return &apdu->u.deleteResultSetRequest->referenceId;
case Z_APDU_deleteResultSetResponse:
- return &apdu->u.deleteResultSetResponse->referenceId;
+ return &apdu->u.deleteResultSetResponse->referenceId;
case Z_APDU_accessControlRequest:
- return &apdu->u.accessControlRequest->referenceId;
+ return &apdu->u.accessControlRequest->referenceId;
case Z_APDU_accessControlResponse:
- return &apdu->u.accessControlResponse->referenceId;
+ return &apdu->u.accessControlResponse->referenceId;
case Z_APDU_resourceControlRequest:
- return &apdu->u.resourceControlRequest->referenceId;
+ return &apdu->u.resourceControlRequest->referenceId;
case Z_APDU_resourceControlResponse:
- return &apdu->u.resourceControlResponse->referenceId;
+ return &apdu->u.resourceControlResponse->referenceId;
case Z_APDU_triggerResourceControlRequest:
- return &apdu->u.triggerResourceControlRequest->referenceId;
+ return &apdu->u.triggerResourceControlRequest->referenceId;
case Z_APDU_resourceReportRequest:
- return &apdu->u.resourceReportRequest->referenceId;
+ return &apdu->u.resourceReportRequest->referenceId;
case Z_APDU_resourceReportResponse:
- return &apdu->u.resourceReportResponse->referenceId;
+ return &apdu->u.resourceReportResponse->referenceId;
case Z_APDU_scanRequest:
- return &apdu->u.scanRequest->referenceId;
+ return &apdu->u.scanRequest->referenceId;
case Z_APDU_scanResponse:
- return &apdu->u.scanResponse->referenceId;
+ return &apdu->u.scanResponse->referenceId;
case Z_APDU_sortRequest:
- return &apdu->u.sortRequest->referenceId;
+ return &apdu->u.sortRequest->referenceId;
case Z_APDU_sortResponse:
- return &apdu->u.sortResponse->referenceId;
+ return &apdu->u.sortResponse->referenceId;
case Z_APDU_segmentRequest:
- return &apdu->u.segmentRequest->referenceId;
+ return &apdu->u.segmentRequest->referenceId;
case Z_APDU_extendedServicesRequest:
- return &apdu->u.extendedServicesRequest->referenceId;
+ return &apdu->u.extendedServicesRequest->referenceId;
case Z_APDU_extendedServicesResponse:
- return &apdu->u.extendedServicesResponse->referenceId;
+ return &apdu->u.extendedServicesResponse->referenceId;
case Z_APDU_close:
- return &apdu->u.close->referenceId;
+ return &apdu->u.close->referenceId;
}
return 0;
}
Z_ReferenceId **id_to = get_referenceIdP(to);
if (id_from && *id_from && id_to)
{
- *id_to = (Z_ReferenceId*) odr_malloc (m_odr_out, sizeof(**id_to));
- (*id_to)->size = (*id_to)->len = (*id_from)->len;
- (*id_to)->buf = (unsigned char*) odr_malloc (m_odr_out, (*id_to)->len);
- memcpy ((*id_to)->buf, (*id_from)->buf, (*id_to)->len);
+ *id_to = (Z_ReferenceId*) odr_malloc (m_odr_out, sizeof(**id_to));
+ (*id_to)->size = (*id_to)->len = (*id_from)->len;
+ (*id_to)->buf = (unsigned char*) odr_malloc (m_odr_out, (*id_to)->len);
+ memcpy ((*id_to)->buf, (*id_from)->buf, (*id_to)->len);
}
else if (id_to)
- *id_to = 0;
+ *id_to = 0;
}
int Z_Assoc::send_Z_PDU(Z_APDU *apdu, int *plen)
int len;
if (encode_GDU(apdu, &buf, &len) > 0)
{
- if (plen)
- *plen = len;
- return m_PDU_Observable->send_PDU(buf, len);
+ if (plen)
+ *plen = len;
+ return m_PDU_Observable->send_PDU(buf, len);
}
return -1;
}
if (!z_GDU(m_odr_in, &apdu, 0, 0))
{
- const char *element = odr_getelement(m_odr_in);
+ const char *element = odr_getelement(m_odr_in);
yaz_log(YLOG_LOG, "PDU decode failed '%s' near byte %d. Element %s",
- odr_errmsg(odr_geterror(m_odr_in)),
- odr_offset(m_odr_in),
- element ? element : "unknown");
+ odr_errmsg(odr_geterror(m_odr_in)),
+ odr_offset(m_odr_in),
+ element ? element : "unknown");
yaz_log(YLOG_LOG, "PDU dump:");
odr_dumpBER(yaz_log_file(), buf, len);
return 0;
}
else
{
- if (m_APDU_yazlog)
- { // use YAZ log FILE
- FILE *save = m_APDU_file;
-
- odr_setprint(m_odr_print, yaz_log_file());
- z_GDU(m_odr_print, &apdu, 0, "decode");
- m_APDU_file = save;
- odr_setprint(m_odr_print, save);
- }
- if (m_APDU_file)
+ if (m_APDU_yazlog)
+ { // use YAZ log FILE
+ FILE *save = m_APDU_file;
+
+ odr_setprint(m_odr_print, yaz_log_file());
+ z_GDU(m_odr_print, &apdu, 0, "decode");
+ m_APDU_file = save;
+ odr_setprint(m_odr_print, save);
+ }
+ if (m_APDU_file)
{
- z_GDU(m_odr_print, &apdu, 0, "decode");
- fflush(m_APDU_file);
- }
+ z_GDU(m_odr_print, &apdu, 0, "decode");
+ fflush(m_APDU_file);
+ }
return apdu;
}
}
int r = z_GDU(m_odr_out, &apdu, 0, 0);
if (!r) // decoding failed. Get the failed element
- element = odr_getelement(m_odr_out);
+ element = odr_getelement(m_odr_out);
if (m_APDU_yazlog || !r)
{
- if (!r)
- yaz_log (YLOG_LOG, "PDU encode failed. Element %s",
- element ? element : "unknown");
- FILE *save = m_APDU_file;
- FILE *yazf = yaz_log_file();
- odr_setprint(m_odr_print, yazf); // use YAZ log FILE
- z_GDU(m_odr_print, &apdu, 0, "encode");
- m_APDU_file = save;
- odr_setprint(m_odr_print, save);
+ if (!r)
+ yaz_log (YLOG_LOG, "PDU encode failed. Element %s",
+ element ? element : "unknown");
+ FILE *save = m_APDU_file;
+ FILE *yazf = yaz_log_file();
+ odr_setprint(m_odr_print, yazf); // use YAZ log FILE
+ z_GDU(m_odr_print, &apdu, 0, "encode");
+ m_APDU_file = save;
+ odr_setprint(m_odr_print, save);
}
if (m_APDU_file)
{
- if (!r)
- fprintf (m_APDU_file, "PDU encode failed. Element %s",
- element ? element : "unknown");
- z_GDU(m_odr_print, &apdu, 0, "encode");
- fflush(m_APDU_file);
+ if (!r)
+ fprintf (m_APDU_file, "PDU encode failed. Element %s",
+ element ? element : "unknown");
+ z_GDU(m_odr_print, &apdu, 0, "encode");
+ fflush(m_APDU_file);
}
if (!r) // encoding failed
return -1;
switch (apdu->which)
{
case Z_APDU_initRequest:
- *oip = &apdu->u.initRequest->otherInfo;
- break;
+ *oip = &apdu->u.initRequest->otherInfo;
+ break;
case Z_APDU_searchRequest:
- *oip = &apdu->u.searchRequest->otherInfo;
- break;
+ *oip = &apdu->u.searchRequest->otherInfo;
+ break;
case Z_APDU_presentRequest:
- *oip = &apdu->u.presentRequest->otherInfo;
- break;
+ *oip = &apdu->u.presentRequest->otherInfo;
+ break;
case Z_APDU_sortRequest:
- *oip = &apdu->u.sortRequest->otherInfo;
- break;
+ *oip = &apdu->u.sortRequest->otherInfo;
+ break;
case Z_APDU_scanRequest:
- *oip = &apdu->u.scanRequest->otherInfo;
- break;
+ *oip = &apdu->u.scanRequest->otherInfo;
+ break;
case Z_APDU_extendedServicesRequest:
*oip = &apdu->u.extendedServicesRequest->otherInfo;
break;
*oip = &apdu->u.deleteResultSetRequest->otherInfo;
break;
case Z_APDU_initResponse:
- *oip = &apdu->u.initResponse->otherInfo;
- break;
+ *oip = &apdu->u.initResponse->otherInfo;
+ break;
case Z_APDU_searchResponse:
- *oip = &apdu->u.searchResponse->otherInfo;
- break;
+ *oip = &apdu->u.searchResponse->otherInfo;
+ break;
case Z_APDU_presentResponse:
- *oip = &apdu->u.presentResponse->otherInfo;
- break;
+ *oip = &apdu->u.presentResponse->otherInfo;
+ break;
case Z_APDU_sortResponse:
- *oip = &apdu->u.sortResponse->otherInfo;
- break;
+ *oip = &apdu->u.sortResponse->otherInfo;
+ break;
case Z_APDU_scanResponse:
- *oip = &apdu->u.scanResponse->otherInfo;
- break;
+ *oip = &apdu->u.scanResponse->otherInfo;
+ break;
case Z_APDU_extendedServicesResponse:
*oip = &apdu->u.extendedServicesResponse->otherInfo;
break;
*oip = &apdu->u.deleteResultSetResponse->otherInfo;
break;
default:
- *oip = 0;
- break;
+ *oip = 0;
+ break;
}
}
Z_OtherInformation **otherInformation;
get_otherInfoAPDU(apdu, &otherInformation);
if (!otherInformation)
- return;
+ return;
set_otherInformationString(otherInformation, oidval, categoryValue, str);
}
ent.oclass = CLASS_USERINFO;
ent.value = (oid_value) oidval;
if (!oid_ent_to_oid (&ent, oid))
- return ;
+ return ;
set_otherInformationString(otherInformation, oid, categoryValue, str);
}
int *oid, int categoryValue, const char *str)
{
Z_OtherInformationUnit *oi =
- update_otherInformation(otherInformation, 1, oid, categoryValue, 0);
+ update_otherInformation(otherInformation, 1, oid, categoryValue, 0);
if (!oi)
- return;
+ return;
oi->information.characterInfo = odr_strdup (odr_encode(), str);
}
int *oid, int categoryValue, int deleteFlag)
{
return yaz_oi_update (otherInformationP,
- (createFlag ? odr_encode() : 0),
- oid, categoryValue, deleteFlag);
+ (createFlag ? odr_encode() : 0),
+ oid, categoryValue, deleteFlag);
}
Z_ReferenceId* Z_Assoc::getRefID(char* str)
return id;
}
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+
* Copyright (c) 2002-2004, Index Data.
* See the file LICENSE for details.
*
- * $Id: yaz-z-cache.cpp,v 1.13 2005-06-08 13:28:06 adam Exp $
+ * $Id: yaz-z-cache.cpp,v 1.14 2005-06-25 15:53:19 adam Exp $
*/
#include <yaz/log.h>
int v = z_SearchRequest (encode, &sr, 1, 0);
if (v)
{
- int len;
- char *buf = odr_getbuf(encode, &len, 0);
- odr_setbuf(decode, buf, len, 0);
- z_SearchRequest(decode, &m_searchRequest, 1, 0);
- nmem_transfer(m_mem, decode->mem);
+ int len;
+ char *buf = odr_getbuf(encode, &len, 0);
+ odr_setbuf(decode, buf, len, 0);
+ z_SearchRequest(decode, &m_searchRequest, 1, 0);
+ nmem_transfer(m_mem, decode->mem);
}
odr_destroy(encode);
odr_destroy(decode);
int v = z_PresentRequest (encode, &pr, 1, 0);
if (v)
{
- int len;
- char *buf = odr_getbuf(encode, &len, 0);
- odr_setbuf(decode, buf, len, 0);
- z_PresentRequest(decode, &m_presentRequest, 1, 0);
- nmem_transfer(m_mem, decode->mem);
+ int len;
+ char *buf = odr_getbuf(encode, &len, 0);
+ odr_setbuf(decode, buf, len, 0);
+ z_PresentRequest(decode, &m_presentRequest, 1, 0);
+ nmem_transfer(m_mem, decode->mem);
}
odr_destroy(encode);
odr_destroy(decode);
}
void RecordCache::add (ODR o, Z_NamePlusRecordList *npr, int start,
- int hits)
+ int hits)
{
if (nmem_total(m_mem) > m_max_size)
- return;
+ return;
// Build appropriate compspec for this response
Z_RecordComposition *comp = 0;
if (hits == -1 && m_presentRequest)
- comp = m_presentRequest->recordComposition;
+ comp = m_presentRequest->recordComposition;
else if (hits > 0 && m_searchRequest)
{
- Z_ElementSetNames *esn;
-
- if (hits <= *m_searchRequest->smallSetUpperBound)
- esn = m_searchRequest->smallSetElementSetNames;
- else
- esn = m_searchRequest->mediumSetElementSetNames;
- comp = (Z_RecordComposition *) nmem_malloc(m_mem, sizeof(*comp));
- comp->which = Z_RecordComp_simple;
- comp->u.simple = esn;
+ Z_ElementSetNames *esn;
+
+ if (hits <= *m_searchRequest->smallSetUpperBound)
+ esn = m_searchRequest->smallSetElementSetNames;
+ else
+ esn = m_searchRequest->mediumSetElementSetNames;
+ comp = (Z_RecordComposition *) nmem_malloc(m_mem, sizeof(*comp));
+ comp->which = Z_RecordComp_simple;
+ comp->u.simple = esn;
}
// Z_NamePlusRecordList *npr to be owned by m_mem..
int i;
for (i = 0; i<npr->num_records; i++)
{
- RecordCache_Entry *entry = (RecordCache_Entry *)
- nmem_malloc(m_mem, sizeof(*entry));
- entry->m_record = (Z_NamePlusRecord *)
- nmem_malloc(m_mem, sizeof(*entry->m_record));
- entry->m_record->databaseName = npr->records[i]->databaseName;
- entry->m_record->which = npr->records[i]->which;
- entry->m_record->u.databaseRecord = npr->records[i]->u.databaseRecord;
- entry->m_comp = comp;
- entry->m_offset = i + start;
- entry->m_next = m_entries;
- m_entries = entry;
+ RecordCache_Entry *entry = (RecordCache_Entry *)
+ nmem_malloc(m_mem, sizeof(*entry));
+ entry->m_record = (Z_NamePlusRecord *)
+ nmem_malloc(m_mem, sizeof(*entry->m_record));
+ entry->m_record->databaseName = npr->records[i]->databaseName;
+ entry->m_record->which = npr->records[i]->which;
+ entry->m_record->u.databaseRecord = npr->records[i]->u.databaseRecord;
+ entry->m_comp = comp;
+ entry->m_offset = i + start;
+ entry->m_next = m_entries;
+ m_entries = entry;
}
}
int RecordCache::match (RecordCache_Entry *entry,
- Odr_oid *syntax, int offset,
- Z_RecordComposition *comp)
+ Odr_oid *syntax, int offset,
+ Z_RecordComposition *comp)
{
// See if our compspec match...
int match = 0;
char *buf2 = odr_getbuf(o2, &len2, 0);
if (buf1 && buf2 && len1 && len1 == len2 && !memcmp(buf1, buf2, len1))
- match = 1;
+ match = 1;
else if (!buf1 && !buf2 && !len1 && !len2)
- match = 1;
+ match = 1;
odr_destroy(o1);
odr_destroy(o2);
if (!match)
- return 0;
+ return 0;
if (!syntax)
- return 0;
+ return 0;
// See if offset, OID match..
if (entry->m_offset == offset &&
- entry->m_record->which == Z_NamePlusRecord_databaseRecord &&
- !oid_oidcmp(entry->m_record->u.databaseRecord->direct_reference,
- syntax))
- return 1;
+ entry->m_record->which == Z_NamePlusRecord_databaseRecord &&
+ !oid_oidcmp(entry->m_record->u.databaseRecord->direct_reference,
+ syntax))
+ return 1;
#if 0
char mstr1[100];
oid_to_dotstring(entry->m_record->u.databaseRecord->direct_reference, mstr1);
}
int RecordCache::lookup (ODR o, Z_NamePlusRecordList **npr,
- int start, int num,
- Odr_oid *syntax,
- Z_RecordComposition *comp)
+ int start, int num,
+ Odr_oid *syntax,
+ Z_RecordComposition *comp)
{
int i;
yaz_log(YLOG_DEBUG, "cache lookup start=%d num=%d", start, num);
for (i = 0; i<num; i++)
{
- RecordCache_Entry *entry = m_entries;
- for(; entry; entry = entry->m_next)
- if (match(entry, syntax, start+i, comp))
- break;
- if (!entry)
- return 0;
+ RecordCache_Entry *entry = m_entries;
+ for(; entry; entry = entry->m_next)
+ if (match(entry, syntax, start+i, comp))
+ break;
+ if (!entry)
+ return 0;
}
*npr = (Z_NamePlusRecordList *) odr_malloc(o, sizeof(**npr));
(*npr)->num_records = num;
(*npr)->records = (Z_NamePlusRecord **)
- odr_malloc(o, num * sizeof(Z_NamePlusRecord *));
+ odr_malloc(o, num * sizeof(Z_NamePlusRecord *));
for (i = 0; i<num; i++)
{
- RecordCache_Entry *entry = m_entries;
- for(; entry; entry = entry->m_next)
- if (match(entry, syntax, start+i, comp))
- break;
- if (!entry)
- return 0;
- (*npr)->records[i] = (Z_NamePlusRecord *)
- odr_malloc(o, sizeof(Z_NamePlusRecord));
- (*npr)->records[i]->databaseName = entry->m_record->databaseName;
- (*npr)->records[i]->which = entry->m_record->which;
- (*npr)->records[i]->u.databaseRecord =
- entry->m_record->u.databaseRecord;
+ RecordCache_Entry *entry = m_entries;
+ for(; entry; entry = entry->m_next)
+ if (match(entry, syntax, start+i, comp))
+ break;
+ if (!entry)
+ return 0;
+ (*npr)->records[i] = (Z_NamePlusRecord *)
+ odr_malloc(o, sizeof(Z_NamePlusRecord));
+ (*npr)->records[i]->databaseName = entry->m_record->databaseName;
+ (*npr)->records[i]->which = entry->m_record->which;
+ (*npr)->records[i]->u.databaseRecord =
+ entry->m_record->u.databaseRecord;
}
return 1;
}
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+
* Copyright (c) 2001, Index Data.
* See the file LICENSE for details.
*
- * $Id: yaz-z-databases.cpp,v 1.5 2005-06-02 06:40:21 adam Exp $
+ * $Id: yaz-z-databases.cpp,v 1.6 2005-06-25 15:53:19 adam Exp $
*/
#include <string.h>
return 0;
return 1;
}
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+
* Copyright (c) 1998-2003, Index Data.
* See the file LICENSE for details.
*
- * $Id: yaz-z-query.cpp,v 1.16 2005-06-02 06:40:21 adam Exp $
+ * $Id: yaz-z-query.cpp,v 1.17 2005-06-25 15:53:19 adam Exp $
*/
#include <yaz++/z-query.h>
query->which = Z_Query_type_1;
query->u.type_1 = p_query_rpn (odr_encode, PROTO_Z3950, rpn);
if (!query->u.type_1)
- return -1;
+ return -1;
if (!z_Query (odr_encode, &query, 0, 0))
- return -1;
+ return -1;
// z_Query(odr_print, &query, 0, 0);
m_buf = odr_getbuf (odr_encode, &m_len, 0);
return m_len;
m_buf = 0;
odr_reset (odr_encode);
if (!z_Query (odr_encode, &z_query, 0, 0))
- return;
+ return;
m_buf = odr_getbuf (odr_encode, &m_len, 0);
}
{
Z_Query *query;
if (!m_buf)
- return 0;
+ return 0;
odr_reset(odr_decode);
odr_setbuf(odr_decode, m_buf, m_len, 0);
if (!z_Query(odr_decode, &query, 0, 0))
- return 0;
+ return 0;
return query;
}
Z_Query *query;
*str = 0;
if (!m_buf)
- return;
+ return;
odr_setbuf (odr_decode, m_buf, m_len, 0);
if (!z_Query(odr_decode, &query, 0, 0))
- return;
+ return;
WRBUF wbuf = zquery2pquery(query);
if (wbuf)
{
- if (wrbuf_len(wbuf) > len-1)
- {
- memcpy(str, wrbuf_buf(wbuf), len-1);
- str[len-1] = '\0';
- }
- else
- strcpy(str, wrbuf_buf(wbuf));
- wrbuf_free(wbuf,1);
+ if (wrbuf_len(wbuf) > len-1)
+ {
+ memcpy(str, wrbuf_buf(wbuf), len-1);
+ str[len-1] = '\0';
+ }
+ else
+ strcpy(str, wrbuf_buf(wbuf));
+ wrbuf_free(wbuf,1);
}
odr_reset(odr_decode);
}
int Yaz_Z_Query::match(Yaz_Z_Query *other)
{
if (m_len != other->m_len)
- return 0;
+ return 0;
if (!m_buf || !other->m_buf)
- return 0;
+ return 0;
if (memcmp(m_buf, other->m_buf, m_len))
- return 0;
+ return 0;
return 1;
}
void Yaz_Z_Query::oid2str(Odr_oid *o, WRBUF buf)
{
for (; *o >= 0; o++) {
- char ibuf[16];
- sprintf(ibuf, "%d", *o);
- wrbuf_puts(buf, ibuf);
- if (o[1] > 0)
- wrbuf_putc(buf, '.');
+ char ibuf[16];
+ sprintf(ibuf, "%d", *o);
+ wrbuf_puts(buf, ibuf);
+ if (o[1] > 0)
+ wrbuf_putc(buf, '.');
}
}
wrbuf_putc(wbuf, '"');
for (i = 0; i<len; i++)
{
- int ch = buf[i];
- if (ch == '"')
- wrbuf_putc(wbuf, '\\');
- wrbuf_putc(wbuf, ch);
+ int ch = buf[i];
+ if (ch == '"')
+ wrbuf_putc(wbuf, '\\');
+ wrbuf_putc(wbuf, ch);
}
wrbuf_puts(wbuf, "\" ");
}
{
if (s->which == Z_RPNStructure_simple)
{
- Z_Operand *o = s->u.simple;
-
- if (o->which == Z_Operand_APT)
- {
- Z_AttributesPlusTerm *at = s->u.simple->u.attributesPlusTerm;
- if (at->attributes) {
- int i;
- for (i = 0; i < at->attributes->num_attributes; i++) {
- wrbuf_puts(buf, "@attr ");
- if (at->attributes->attributes[i]->attributeSet) {
- oid2str(at->attributes->attributes[i]->attributeSet, buf);
- wrbuf_putc(buf, ' ');
- }
- wrbuf_printf(buf, "%d=", *at->attributes->attributes[i]->attributeType);
- wrbuf_printf(buf, "%d ", *at->attributes->attributes[i]->value.numeric);
- }
- }
- if (at->term->which == Z_Term_general)
- {
- pr_term(buf, (char*) at->term->u.general->buf,
- at->term->u.general->len);
- }
- else if (at->term->which == Z_Term_characterString)
- {
- wrbuf_puts(buf, "@term string ");
- pr_term(buf, at->term->u.characterString,
- strlen(at->term->u.characterString));
-
- }
- }
- else if (o->which == Z_Operand_resultSetId)
- {
- wrbuf_printf(buf, "@set %s ", o->u.resultSetId);
- }
+ Z_Operand *o = s->u.simple;
+
+ if (o->which == Z_Operand_APT)
+ {
+ Z_AttributesPlusTerm *at = s->u.simple->u.attributesPlusTerm;
+ if (at->attributes) {
+ int i;
+ for (i = 0; i < at->attributes->num_attributes; i++) {
+ wrbuf_puts(buf, "@attr ");
+ if (at->attributes->attributes[i]->attributeSet) {
+ oid2str(at->attributes->attributes[i]->attributeSet, buf);
+ wrbuf_putc(buf, ' ');
+ }
+ wrbuf_printf(buf, "%d=", *at->attributes->attributes[i]->attributeType);
+ wrbuf_printf(buf, "%d ", *at->attributes->attributes[i]->value.numeric);
+ }
+ }
+ if (at->term->which == Z_Term_general)
+ {
+ pr_term(buf, (char*) at->term->u.general->buf,
+ at->term->u.general->len);
+ }
+ else if (at->term->which == Z_Term_characterString)
+ {
+ wrbuf_puts(buf, "@term string ");
+ pr_term(buf, at->term->u.characterString,
+ strlen(at->term->u.characterString));
+
+ }
+ }
+ else if (o->which == Z_Operand_resultSetId)
+ {
+ wrbuf_printf(buf, "@set %s ", o->u.resultSetId);
+ }
}
else if (s->which == Z_RPNStructure_complex)
{
- Z_Complex *c = s->u.complex;
-
- switch (c->roperator->which) {
- case Z_Operator_and: wrbuf_puts(buf, "@and "); break;
- case Z_Operator_or: wrbuf_puts(buf, "@or "); break;
- case Z_Operator_and_not: wrbuf_puts(buf, "@not "); break;
- case Z_Operator_prox: wrbuf_puts(buf, "@prox "); break;
- default: wrbuf_puts(buf, "@unknown ");
- }
- if (!rpn2pquery(c->s1, buf))
- return 0;
- if (!rpn2pquery(c->s2, buf))
- return 0;
+ Z_Complex *c = s->u.complex;
+
+ switch (c->roperator->which) {
+ case Z_Operator_and: wrbuf_puts(buf, "@and "); break;
+ case Z_Operator_or: wrbuf_puts(buf, "@or "); break;
+ case Z_Operator_and_not: wrbuf_puts(buf, "@not "); break;
+ case Z_Operator_prox: wrbuf_puts(buf, "@prox "); break;
+ default: wrbuf_puts(buf, "@unknown ");
+ }
+ if (!rpn2pquery(c->s1, buf))
+ return 0;
+ if (!rpn2pquery(c->s2, buf))
+ return 0;
}
return 1;
}
WRBUF Yaz_Z_Query::zquery2pquery(Z_Query *q)
{
if (q->which != Z_Query_type_1 && q->which != Z_Query_type_101)
- return 0;
+ return 0;
WRBUF buf = wrbuf_alloc();
if (q->u.type_1->attributeSetId) {
- /* Output attribute set ID */
- wrbuf_puts(buf, "@attrset ");
- oid2str(q->u.type_1->attributeSetId, buf);
- wrbuf_putc(buf, ' ');
+ /* Output attribute set ID */
+ wrbuf_puts(buf, "@attrset ");
+ oid2str(q->u.type_1->attributeSetId, buf);
+ wrbuf_putc(buf, ' ');
}
return rpn2pquery(q->u.type_1->RPNStructure, buf) ? buf : 0;
}
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+
* Copyright (c) 2000-2004, Index Data.
* See the file LICENSE for details.
*
- * $Id: yaz-z-server-ill.cpp,v 1.13 2005-06-08 13:28:06 adam Exp $
+ * $Id: yaz-z-server-ill.cpp,v 1.14 2005-06-25 15:53:19 adam Exp $
*/
#include <yaz/log.h>
using namespace yazpp_1;
int Yaz_Facility_ILL::init(Z_Server *s, Z_InitRequest *initRequest,
- Z_InitResponse *initResponse)
+ Z_InitResponse *initResponse)
{
Z_Options *req = initRequest->options;
Z_Options *res = initResponse->options;
if (ODR_MASK_GET(req, Z_Options_extendedServices))
- ODR_MASK_SET(res, Z_Options_extendedServices);
+ ODR_MASK_SET(res, Z_Options_extendedServices);
return 1;
}
Z_APDU *apdu_response;
if (apdu_request->which != Z_APDU_extendedServicesRequest)
- return 0;
+ return 0;
Z_ExtendedServicesRequest *req = apdu_request->u.extendedServicesRequest;
if (!req->taskSpecificParameters || req->taskSpecificParameters->which !=
Z_External_itemOrder)
s->send_Z_PDU(apdu_response, 0);
return 1;
}
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+
* Copyright (c) 2000-2004, Index Data.
* See the file LICENSE for details.
*
- * $Id: yaz-z-server-sr.cpp,v 1.10 2005-06-08 13:28:06 adam Exp $
+ * $Id: yaz-z-server-sr.cpp,v 1.11 2005-06-25 15:53:19 adam Exp $
*
*/
using namespace yazpp_1;
Z_Records *Yaz_Facility_Retrieval::pack_records (Z_Server *s,
- const char *resultSetName,
- int start, int xnum,
- Z_RecordComposition *comp,
- int *next, int *pres,
- int *format)
+ const char *resultSetName,
+ int start, int xnum,
+ Z_RecordComposition *comp,
+ int *next, int *pres,
+ int *format)
{
int recno, total_length = 0, toget = xnum, dumped_records = 0;
Z_Records *records =
- (Z_Records *) odr_malloc (odr_encode(), sizeof(*records));
+ (Z_Records *) odr_malloc (odr_encode(), sizeof(*records));
Z_NamePlusRecordList *reclist =
- (Z_NamePlusRecordList *) odr_malloc (odr_encode(), sizeof(*reclist));
+ (Z_NamePlusRecordList *) odr_malloc (odr_encode(), sizeof(*reclist));
Z_NamePlusRecord **list =
- (Z_NamePlusRecord **) odr_malloc (odr_encode(), sizeof(*list) * toget);
+ (Z_NamePlusRecord **) odr_malloc (odr_encode(), sizeof(*list) * toget);
records->which = Z_Records_DBOSD;
records->u.databaseOrSurDiagnostics = reclist;
for (recno = start; reclist->num_records < toget; recno++)
{
- Z_NamePlusRecord *this_rec =
- (Z_NamePlusRecord *) odr_malloc (odr_encode(), sizeof(*this_rec));
- this_rec->databaseName = 0;
- this_rec->which = Z_NamePlusRecord_databaseRecord;
- this_rec->u.databaseRecord = 0;
-
- int this_length = 0;
-
- sr_record (resultSetName, recno, format, comp, this_rec, records);
-
- if (records->which != Z_Records_DBOSD)
- {
- *pres = Z_PRES_FAILURE;
- return records;
- }
-
- if (this_rec->which == Z_NamePlusRecord_databaseRecord &&
- this_rec->u.databaseRecord == 0)
- { // handler did not return a record..
- create_surrogateDiagnostics(odr_encode(), this_rec, 0, 14, 0);
- }
- /*
- * we get the number of bytes allocated on the stream before any
- * allocation done by the backend - this should give us a reasonable
- * idea of the total size of the data so far.
- */
- total_length = odr_total(odr_encode()) - dumped_records;
- this_length = odr_total(odr_encode()) - total_length;
- if (this_length + total_length > m_preferredMessageSize)
- {
- /* record is small enough, really */
- if (this_length <= m_preferredMessageSize)
- {
- *pres = Z_PRES_PARTIAL_2;
- break;
- }
- if (this_length >= m_maximumRecordSize)
- { /* too big entirely */
- reclist->records[reclist->num_records] = this_rec;
- create_surrogateDiagnostics(odr_encode(), this_rec,
- this_rec->databaseName, 17, 0);
- reclist->num_records++;
- *next = recno + 1;
- dumped_records += this_length;
- continue;
- }
- else /* record can only be fetched by itself */
- {
- if (toget > 1)
- {
- yaz_log(YLOG_DEBUG, " Dropped it");
- reclist->records[reclist->num_records] = this_rec;
- create_surrogateDiagnostics(odr_encode(), this_rec,
- this_rec->databaseName,
- 16, 0);
- reclist->num_records++;
- // *next = freq.last_in_set ? 0 : recno + 1;
- *next = recno + 1;
- dumped_records += this_length;
- continue;
- }
- }
- }
- reclist->records[reclist->num_records] = this_rec;
- reclist->num_records++;
- *next = recno + 1;
+ Z_NamePlusRecord *this_rec =
+ (Z_NamePlusRecord *) odr_malloc (odr_encode(), sizeof(*this_rec));
+ this_rec->databaseName = 0;
+ this_rec->which = Z_NamePlusRecord_databaseRecord;
+ this_rec->u.databaseRecord = 0;
+
+ int this_length = 0;
+
+ sr_record (resultSetName, recno, format, comp, this_rec, records);
+
+ if (records->which != Z_Records_DBOSD)
+ {
+ *pres = Z_PRES_FAILURE;
+ return records;
+ }
+
+ if (this_rec->which == Z_NamePlusRecord_databaseRecord &&
+ this_rec->u.databaseRecord == 0)
+ { // handler did not return a record..
+ create_surrogateDiagnostics(odr_encode(), this_rec, 0, 14, 0);
+ }
+ /*
+ * we get the number of bytes allocated on the stream before any
+ * allocation done by the backend - this should give us a reasonable
+ * idea of the total size of the data so far.
+ */
+ total_length = odr_total(odr_encode()) - dumped_records;
+ this_length = odr_total(odr_encode()) - total_length;
+ if (this_length + total_length > m_preferredMessageSize)
+ {
+ /* record is small enough, really */
+ if (this_length <= m_preferredMessageSize)
+ {
+ *pres = Z_PRES_PARTIAL_2;
+ break;
+ }
+ if (this_length >= m_maximumRecordSize)
+ { /* too big entirely */
+ reclist->records[reclist->num_records] = this_rec;
+ create_surrogateDiagnostics(odr_encode(), this_rec,
+ this_rec->databaseName, 17, 0);
+ reclist->num_records++;
+ *next = recno + 1;
+ dumped_records += this_length;
+ continue;
+ }
+ else /* record can only be fetched by itself */
+ {
+ if (toget > 1)
+ {
+ yaz_log(YLOG_DEBUG, " Dropped it");
+ reclist->records[reclist->num_records] = this_rec;
+ create_surrogateDiagnostics(odr_encode(), this_rec,
+ this_rec->databaseName,
+ 16, 0);
+ reclist->num_records++;
+ // *next = freq.last_in_set ? 0 : recno + 1;
+ *next = recno + 1;
+ dumped_records += this_length;
+ continue;
+ }
+ }
+ }
+ reclist->records[reclist->num_records] = this_rec;
+ reclist->num_records++;
+ *next = recno + 1;
}
return records;
}
void Yaz_Facility_Retrieval::fetch_via_piggyback (Z_Server *s,
- Z_SearchRequest *req,
- Z_SearchResponse *res)
+ Z_SearchRequest *req,
+ Z_SearchResponse *res)
{
bool_t *sr = (bool_t *)odr_malloc (odr_encode(), sizeof(*sr));
*sr = 1;
/* how many records does the user agent want, then? */
if (hits <= *req->smallSetUpperBound)
{
- toget = hits;
- if ((comp.u.simple = req->smallSetElementSetNames))
- compp = ∁
+ toget = hits;
+ if ((comp.u.simple = req->smallSetElementSetNames))
+ compp = ∁
}
else if (hits < *req->largeSetLowerBound)
{
- toget = *req->mediumSetPresentNumber;
- if (toget > hits)
- toget = hits;
- if ((comp.u.simple = req->mediumSetElementSetNames))
- compp = ∁
+ toget = *req->mediumSetPresentNumber;
+ if (toget > hits)
+ toget = hits;
+ if ((comp.u.simple = req->mediumSetElementSetNames))
+ compp = ∁
}
if (toget && !res->records)
{
- res->presentStatus = (int *) odr_malloc (odr_encode(), sizeof(int));
- *res->presentStatus = Z_PRES_SUCCESS;
- res->records =
- pack_records(s, req->resultSetName, 1, toget, compp,
- res->nextResultSetPosition,
- res->presentStatus,
- req->preferredRecordSyntax);
- if (!res->records)
- return;
- if (res->records->which == Z_Records_DBOSD)
- *res->numberOfRecordsReturned =
- res->records->u.databaseOrSurDiagnostics->num_records;
- res->searchStatus = sr;
- res->resultSetStatus = 0;
+ res->presentStatus = (int *) odr_malloc (odr_encode(), sizeof(int));
+ *res->presentStatus = Z_PRES_SUCCESS;
+ res->records =
+ pack_records(s, req->resultSetName, 1, toget, compp,
+ res->nextResultSetPosition,
+ res->presentStatus,
+ req->preferredRecordSyntax);
+ if (!res->records)
+ return;
+ if (res->records->which == Z_Records_DBOSD)
+ *res->numberOfRecordsReturned =
+ res->records->u.databaseOrSurDiagnostics->num_records;
+ res->searchStatus = sr;
+ res->resultSetStatus = 0;
}
else
{
- if (hits)
- *res->nextResultSetPosition = 1;
- res->numberOfRecordsReturned = nulint;
- res->searchStatus = sr;
- res->resultSetStatus = 0;
- res->presentStatus = 0;
+ if (hits)
+ *res->nextResultSetPosition = 1;
+ res->numberOfRecordsReturned = nulint;
+ res->searchStatus = sr;
+ res->resultSetStatus = 0;
+ res->presentStatus = 0;
}
}
void Yaz_Facility_Retrieval::fetch_via_present (Z_Server *s,
- Z_PresentRequest *req,
- Z_PresentResponse *res)
+ Z_PresentRequest *req,
+ Z_PresentResponse *res)
{
res->records =
- pack_records (s, req->resultSetId,*req->resultSetStartPoint,
- *req->numberOfRecordsRequested,
- req->recordComposition,
- res->nextResultSetPosition,
- res->presentStatus,
- req->preferredRecordSyntax);
+ pack_records (s, req->resultSetId,*req->resultSetStartPoint,
+ *req->numberOfRecordsRequested,
+ req->recordComposition,
+ res->nextResultSetPosition,
+ res->presentStatus,
+ req->preferredRecordSyntax);
if (res->records->which == Z_Records_DBOSD)
- *res->numberOfRecordsReturned =
- res->records->u.databaseOrSurDiagnostics->num_records;
+ *res->numberOfRecordsReturned =
+ res->records->u.databaseOrSurDiagnostics->num_records;
}
int Yaz_Facility_Retrieval::init(Z_Server *s, Z_InitRequest *initRequest,
- Z_InitResponse *initResponse)
+ Z_InitResponse *initResponse)
{
Z_Options *req = initRequest->options;
Z_Options *res = initResponse->options;
if (ODR_MASK_GET(req, Z_Options_search))
- ODR_MASK_SET(res, Z_Options_search);
+ ODR_MASK_SET(res, Z_Options_search);
if (ODR_MASK_GET(req, Z_Options_present))
- ODR_MASK_SET(res, Z_Options_present);
+ ODR_MASK_SET(res, Z_Options_present);
m_preferredMessageSize = *initRequest->preferredMessageSize;
m_maximumRecordSize = *initRequest->maximumRecordSize;
return sr_init (initRequest, initResponse);
switch (apdu_request->which)
{
case Z_APDU_searchRequest:
- apdu_response = s->create_Z_PDU(Z_APDU_searchResponse);
- s->transfer_referenceId(apdu_request, apdu_response);
- sr_search (apdu_request->u.searchRequest,
- apdu_response->u.searchResponse);
- if (!apdu_response->u.searchResponse->records)
- {
- fetch_via_piggyback(s, apdu_request->u.searchRequest,
- apdu_response->u.searchResponse);
- }
- s->send_Z_PDU(apdu_response, 0);
- return 1;
+ apdu_response = s->create_Z_PDU(Z_APDU_searchResponse);
+ s->transfer_referenceId(apdu_request, apdu_response);
+ sr_search (apdu_request->u.searchRequest,
+ apdu_response->u.searchResponse);
+ if (!apdu_response->u.searchResponse->records)
+ {
+ fetch_via_piggyback(s, apdu_request->u.searchRequest,
+ apdu_response->u.searchResponse);
+ }
+ s->send_Z_PDU(apdu_response, 0);
+ return 1;
case Z_APDU_presentRequest:
- apdu_response = s->create_Z_PDU(Z_APDU_presentResponse);
- s->transfer_referenceId(apdu_request, apdu_response);
- sr_present (apdu_request->u.presentRequest,
- apdu_response->u.presentResponse);
- if (!apdu_response->u.presentResponse->records)
- fetch_via_present(s, apdu_request->u.presentRequest,
- apdu_response->u.presentResponse);
- s->send_Z_PDU(apdu_response, 0);
- return 1;
+ apdu_response = s->create_Z_PDU(Z_APDU_presentResponse);
+ s->transfer_referenceId(apdu_request, apdu_response);
+ sr_present (apdu_request->u.presentRequest,
+ apdu_response->u.presentResponse);
+ if (!apdu_response->u.presentResponse->records)
+ fetch_via_present(s, apdu_request->u.presentRequest,
+ apdu_response->u.presentResponse);
+ s->send_Z_PDU(apdu_response, 0);
+ return 1;
}
return 0;
}
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+
* Copyright (c) 2000-2004, Index Data.
* See the file LICENSE for details.
*
- * $Id: yaz-z-server-update.cpp,v 1.10 2005-06-08 13:28:06 adam Exp $
+ * $Id: yaz-z-server-update.cpp,v 1.11 2005-06-25 15:53:19 adam Exp $
*/
#include <yaz/log.h>
using namespace yazpp_1;
int Yaz_Facility_Update::init(Z_Server *s, Z_InitRequest *initRequest,
- Z_InitResponse *initResponse)
+ Z_InitResponse *initResponse)
{
Z_Options *req = initRequest->options;
Z_Options *res = initResponse->options;
if (ODR_MASK_GET(req, Z_Options_extendedServices))
- ODR_MASK_SET(res, Z_Options_extendedServices);
+ ODR_MASK_SET(res, Z_Options_extendedServices);
return 1;
}
Z_APDU *apdu_response;
if (apdu_request->which != Z_APDU_extendedServicesRequest)
- return 0;
+ return 0;
Z_ExtendedServicesRequest *req = apdu_request->u.extendedServicesRequest;
if (req->taskSpecificParameters && req->taskSpecificParameters->which ==
Z_External_update)
{
- apdu_response = s->create_Z_PDU(Z_APDU_extendedServicesResponse);
- update_service(req, req->taskSpecificParameters->u.update,
- apdu_response->u.extendedServicesResponse);
- s->transfer_referenceId(apdu_request, apdu_response);
- s->send_Z_PDU(apdu_response, 0);
- return 1;
+ apdu_response = s->create_Z_PDU(Z_APDU_extendedServicesResponse);
+ update_service(req, req->taskSpecificParameters->u.update,
+ apdu_response->u.extendedServicesResponse);
+ s->transfer_referenceId(apdu_request, apdu_response);
+ s->send_Z_PDU(apdu_response, 0);
+ return 1;
}
else if (req->taskSpecificParameters &&
- req->taskSpecificParameters->which == Z_External_update0)
+ req->taskSpecificParameters->which == Z_External_update0)
{
- apdu_response = s->create_Z_PDU(Z_APDU_extendedServicesResponse);
- update_service0 (req, req->taskSpecificParameters->u.update0,
- apdu_response->u.extendedServicesResponse);
- s->transfer_referenceId(apdu_request, apdu_response);
- s->send_Z_PDU(apdu_response, 0);
- return 1;
+ apdu_response = s->create_Z_PDU(Z_APDU_extendedServicesResponse);
+ update_service0 (req, req->taskSpecificParameters->u.update0,
+ apdu_response->u.extendedServicesResponse);
+ s->transfer_referenceId(apdu_request, apdu_response);
+ s->send_Z_PDU(apdu_response, 0);
+ return 1;
}
return 0;
}
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+
* Copyright (c) 2000-2004, Index Data.
* See the file LICENSE for details.
*
- * $Id: yaz-z-server.cpp,v 1.22 2005-06-08 13:28:06 adam Exp $
+ * $Id: yaz-z-server.cpp,v 1.23 2005-06-25 15:53:19 adam Exp $
*/
#include <yaz/log.h>
Z_Server_Facility_Info *p = m_facilities;
while (p)
{
- Z_Server_Facility_Info *p_next = p->m_next;
+ Z_Server_Facility_Info *p_next = p->m_next;
- delete [] p->m_name;
- delete p;
- p = p_next;
+ delete [] p->m_name;
+ delete p;
+ p = p_next;
}
m_facilities = 0;
}
void Z_Server::facility_add(IServer_Facility *facility,
- const char *name)
+ const char *name)
{
Z_Server_Facility_Info **p = &m_facilities;
while (*p)
- p = &(*p)->m_next;
+ p = &(*p)->m_next;
*p = new Z_Server_Facility_Info;
void Z_Server::recv_GDU (Z_GDU *apdu, int len)
{
if (apdu->which == Z_GDU_Z3950)
- recv_Z_PDU(apdu->u.z3950, len);
+ recv_Z_PDU(apdu->u.z3950, len);
else
- delete this;
+ delete this;
}
void Z_Server::recv_Z_PDU (Z_APDU *apdu_request, int len)
if (apdu_request->which == Z_APDU_initRequest)
{
- Z_APDU *apdu_response = create_Z_PDU(Z_APDU_initResponse);
-
- Z_InitRequest *req = apdu_request->u.initRequest;
- Z_InitResponse *resp = apdu_response->u.initResponse;
-
- if (ODR_MASK_GET(req->protocolVersion, Z_ProtocolVersion_1))
- {
- ODR_MASK_SET(resp->protocolVersion, Z_ProtocolVersion_1);
- }
- if (ODR_MASK_GET(req->protocolVersion, Z_ProtocolVersion_2))
- {
- ODR_MASK_SET(resp->protocolVersion, Z_ProtocolVersion_2);
- }
- if (ODR_MASK_GET(req->protocolVersion, Z_ProtocolVersion_3))
- {
- ODR_MASK_SET(resp->protocolVersion, Z_ProtocolVersion_3);
- }
- while (f)
- {
- f->m_facility->init(this, req, resp);
- f = f->m_next;
- }
- transfer_referenceId(apdu_request, apdu_response);
- send_Z_PDU(apdu_response, 0);
+ Z_APDU *apdu_response = create_Z_PDU(Z_APDU_initResponse);
+
+ Z_InitRequest *req = apdu_request->u.initRequest;
+ Z_InitResponse *resp = apdu_response->u.initResponse;
+
+ if (ODR_MASK_GET(req->protocolVersion, Z_ProtocolVersion_1))
+ {
+ ODR_MASK_SET(resp->protocolVersion, Z_ProtocolVersion_1);
+ }
+ if (ODR_MASK_GET(req->protocolVersion, Z_ProtocolVersion_2))
+ {
+ ODR_MASK_SET(resp->protocolVersion, Z_ProtocolVersion_2);
+ }
+ if (ODR_MASK_GET(req->protocolVersion, Z_ProtocolVersion_3))
+ {
+ ODR_MASK_SET(resp->protocolVersion, Z_ProtocolVersion_3);
+ }
+ while (f)
+ {
+ f->m_facility->init(this, req, resp);
+ f = f->m_next;
+ }
+ transfer_referenceId(apdu_request, apdu_response);
+ send_Z_PDU(apdu_response, 0);
}
else
{
- f = m_facilities;
- int taken = 0;
- while (f)
- {
- taken = f->m_facility->recv(this, apdu_request);
- if (taken)
- break;
- f = f->m_next;
- }
- if (!taken)
- {
- yaz_log (YLOG_WARN, "unhandled request = %d", apdu_request->which);
- delete this;
- }
+ f = m_facilities;
+ int taken = 0;
+ while (f)
+ {
+ taken = f->m_facility->recv(this, apdu_request);
+ if (taken)
+ break;
+ f = f->m_next;
+ }
+ if (!taken)
+ {
+ yaz_log (YLOG_WARN, "unhandled request = %d", apdu_request->which);
+ delete this;
+ }
}
}
rec->databaseName = dbname ? odr_strdup (odr, dbname) : 0;
rec->which = Z_NamePlusRecord_databaseRecord;
rec->u.databaseRecord = z_ext_record (odr, format,
- (const char *) buf, len);
+ (const char *) buf, len);
}
/*
int *err = (int *)odr_malloc (odr, sizeof(*err));
Z_DiagRec *drec = (Z_DiagRec *)odr_malloc (odr, sizeof(*drec));
Z_DefaultDiagFormat *dr = (Z_DefaultDiagFormat *)
- odr_malloc (odr, sizeof(*dr));
+ odr_malloc (odr, sizeof(*dr));
yaz_log(YLOG_DEBUG, "SurrogateDiagnotic: %d -- %s", error, addinfo);
*err = error;
dr->which = Z_DefaultDiagFormat_v2Addinfo;
dr->u.v2Addinfo = odr_strdup (odr, addinfo ? addinfo : "");
}
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+
Zlint z(new PDU_Assoc(&mySocketManager));
if (argc > 1)
- z.set_host(argv[1]);
+ z.set_host(argv[1]);
else
- z.set_host("localhost:9999");
+ z.set_host("localhost:9999");
Zlint_test_init_01 t01;
z.add_test(&t01);
z.add_test(&scan01);
while (mySocketManager.processEvent() > 0)
- ;
+ ;
exit (0);
}
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+
* Copyright (c) 2004, Index Data.
* See the file LICENSE for details.
*
- * $Id: test-init-01.cpp,v 1.3 2004-12-13 20:50:54 adam Exp $
+ * $Id: test-init-01.cpp,v 1.4 2005-06-25 15:53:21 adam Exp $
*/
#include <yaz/log.h>
int r = z->send_Z_PDU(apdu, &len);
if (r < 0)
{
- z->msg_check_fail("unable to send init request");
- return TEST_FINISHED;
+ z->msg_check_fail("unable to send init request");
+ return TEST_FINISHED;
}
return TEST_CONTINUE;
}
Zlint_code Zlint_test_init_01::recv_gdu(Zlint *z, Z_GDU *gdu)
{
if (gdu->which == Z_GDU_Z3950 &&
- gdu->u.z3950 && gdu->u.z3950->which == Z_APDU_initResponse)
+ gdu->u.z3950 && gdu->u.z3950->which == Z_APDU_initResponse)
{
- Z_InitResponse *init = gdu->u.z3950->u.initResponse;
- int ver = z->initResponseGetVersion(init);
- int result = init->result ? *init->result : 0;
- if (ver > 3 || ver < 2)
- z->msg_check_fail("got version %d, expected 2 or 3", ver);
- if (!result)
- {
- z->msg_check_fail("init rejected (result false)");
- return TEST_FINISHED;
- }
- else
- z->msg_check_ok();
+ Z_InitResponse *init = gdu->u.z3950->u.initResponse;
+ int ver = z->initResponseGetVersion(init);
+ int result = init->result ? *init->result : 0;
+ if (ver > 3 || ver < 2)
+ z->msg_check_fail("got version %d, expected 2 or 3", ver);
+ if (!result)
+ {
+ z->msg_check_fail("init rejected (result false)");
+ return TEST_FINISHED;
+ }
+ else
+ z->msg_check_ok();
}
else
- z->msg_check_fail("did not receive init response as expected");
+ z->msg_check_fail("did not receive init response as expected");
return TEST_FINISHED;
}
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+
* Copyright (c) 2004, Index Data.
* See the file LICENSE for details.
*
- * $Id: test-init-02.cpp,v 1.3 2004-12-13 20:50:54 adam Exp $
+ * $Id: test-init-02.cpp,v 1.4 2005-06-25 15:53:21 adam Exp $
*/
#include <yaz/log.h>
int r = z->send_Z_PDU(apdu, &len);
if (r < 0)
{
- z->msg_check_fail("unable to send init request");
- return TEST_FINISHED;
+ z->msg_check_fail("unable to send init request");
+ return TEST_FINISHED;
}
return TEST_CONTINUE;
}
Zlint_code Zlint_test_init_02::recv_gdu(Zlint *z, Z_GDU *gdu)
{
if (gdu->which == Z_GDU_Z3950 &&
- gdu->u.z3950 && gdu->u.z3950->which == Z_APDU_initResponse)
+ gdu->u.z3950 && gdu->u.z3950->which == Z_APDU_initResponse)
{
- Z_InitResponse *init = gdu->u.z3950->u.initResponse;
- int ver = z->initResponseGetVersion(init);
- int result = init->result ? *init->result : 0;
- if (ver != 2)
- z->msg_check_fail("got version %d, expected 2", ver);
- z->msg_check_ok();
+ Z_InitResponse *init = gdu->u.z3950->u.initResponse;
+ int ver = z->initResponseGetVersion(init);
+ int result = init->result ? *init->result : 0;
+ if (ver != 2)
+ z->msg_check_fail("got version %d, expected 2", ver);
+ z->msg_check_ok();
}
else
- z->msg_check_fail("did not receive init response as expected");
+ z->msg_check_fail("did not receive init response as expected");
return TEST_FINISHED;
}
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+
* Copyright (c) 2004, Index Data.
* See the file LICENSE for details.
*
- * $Id: test-init-03.cpp,v 1.3 2004-12-13 20:50:54 adam Exp $
+ * $Id: test-init-03.cpp,v 1.4 2005-06-25 15:53:21 adam Exp $
*/
#include <yaz/log.h>
ODR_MASK_ZERO(init->protocolVersion);
int i;
for (i = 0; i< 9; i++)
- ODR_MASK_SET(init->protocolVersion, i);
+ ODR_MASK_SET(init->protocolVersion, i);
int r = z->send_Z_PDU(apdu, &len);
if (r < 0)
{
- z->msg_check_fail("unable to send init request");
- return TEST_FINISHED;
+ z->msg_check_fail("unable to send init request");
+ return TEST_FINISHED;
}
return TEST_CONTINUE;
}
Zlint_code Zlint_test_init_03::recv_gdu(Zlint *z, Z_GDU *gdu)
{
if (gdu->which == Z_GDU_Z3950 &&
- gdu->u.z3950 && gdu->u.z3950->which == Z_APDU_initResponse)
+ gdu->u.z3950 && gdu->u.z3950->which == Z_APDU_initResponse)
{
- Z_InitResponse *init = gdu->u.z3950->u.initResponse;
- int ver = z->initResponseGetVersion(init);
- int result = init->result ? *init->result : 0;
+ Z_InitResponse *init = gdu->u.z3950->u.initResponse;
+ int ver = z->initResponseGetVersion(init);
+ int result = init->result ? *init->result : 0;
- if (ver < 2 || ver > 5)
- z->msg_check_fail("%sgot version %d, expected 2-5", ver);
- z->msg_check_ok();
+ if (ver < 2 || ver > 5)
+ z->msg_check_fail("%sgot version %d, expected 2-5", ver);
+ z->msg_check_ok();
}
else
- z->msg_check_fail("did not receive init response as expected");
+ z->msg_check_fail("did not receive init response as expected");
return TEST_FINISHED;
}
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+
* Copyright (c) 2004, Index Data.
* See the file LICENSE for details.
*
- * $Id: test-init-04.cpp,v 1.3 2004-12-13 20:50:54 adam Exp $
+ * $Id: test-init-04.cpp,v 1.4 2005-06-25 15:53:21 adam Exp $
*/
#include <yaz/log.h>
int r = z->send_Z_PDU(apdu, &len);
if (r < 0)
{
- z->msg_check_fail("unable to send init request");
- return TEST_FINISHED;
+ z->msg_check_fail("unable to send init request");
+ return TEST_FINISHED;
}
return TEST_CONTINUE;
}
Zlint_code Zlint_test_init_04::recv_gdu(Zlint *z, Z_GDU *gdu)
{
if (gdu->which == Z_GDU_Z3950 &&
- gdu->u.z3950 && gdu->u.z3950->which == Z_APDU_initResponse)
+ gdu->u.z3950 && gdu->u.z3950->which == Z_APDU_initResponse)
{
- Z_InitResponse *init = gdu->u.z3950->u.initResponse;
- int ver = z->initResponseGetVersion(init);
- int result = init->result ? *init->result : 0;
-
- if (!init->referenceId)
- z->msg_check_fail("missing referenceID from init response");
- else if (init->referenceId->len != REFID_LEN1
- || memcmp(init->referenceId->buf, REFID_BUF1, REFID_LEN1))
- z->msg_check_fail("reference ID does not match");
- z->msg_check_ok();
+ Z_InitResponse *init = gdu->u.z3950->u.initResponse;
+ int ver = z->initResponseGetVersion(init);
+ int result = init->result ? *init->result : 0;
+
+ if (!init->referenceId)
+ z->msg_check_fail("missing referenceID from init response");
+ else if (init->referenceId->len != REFID_LEN1
+ || memcmp(init->referenceId->buf, REFID_BUF1, REFID_LEN1))
+ z->msg_check_fail("reference ID does not match");
+ z->msg_check_ok();
}
else
- z->msg_check_fail("did not receive init response as expected");
+ z->msg_check_fail("did not receive init response as expected");
return TEST_FINISHED;
}
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+
* Copyright (c) 2004, Index Data.
* See the file LICENSE for details.
*
- * $Id: test-init-05.cpp,v 1.3 2004-12-13 20:50:54 adam Exp $
+ * $Id: test-init-05.cpp,v 1.4 2005-06-25 15:53:21 adam Exp $
*/
#include <yaz/log.h>
int r = z->send_Z_PDU(apdu, &len);
if (r < 0)
{
- z->msg_check_fail("unable to send init request");
- return TEST_FINISHED;
+ z->msg_check_fail("unable to send init request");
+ return TEST_FINISHED;
}
-
+
apdu = z->create_Z_PDU(Z_APDU_initRequest);
init = apdu->u.initRequest;
r = z->send_Z_PDU(apdu, &len);
if (r < 0)
{
- z->msg_check_fail("unable to send init request");
- return TEST_FINISHED;
+ z->msg_check_fail("unable to send init request");
+ return TEST_FINISHED;
}
return TEST_CONTINUE;
}
Zlint_code Zlint_test_init_05::recv_gdu(Zlint *z, Z_GDU *gdu)
{
if (gdu->which == Z_GDU_Z3950 &&
- gdu->u.z3950 && gdu->u.z3950->which == Z_APDU_initResponse)
+ gdu->u.z3950 && gdu->u.z3950->which == Z_APDU_initResponse)
{
- Z_InitResponse *init = gdu->u.z3950->u.initResponse;
- int ver = z->initResponseGetVersion(init);
- int result = init->result ? *init->result : 0;
-
- if (m_init_response_no == 0)
- {
- if (!init->referenceId)
- {
- z->msg_check_fail("missing referenceID from "
- "first init response");
- return TEST_FINISHED;
- }
- else if (init->referenceId->len != REFID_LEN1
- || memcmp(init->referenceId->buf, REFID_BUF1, REFID_LEN1))
- {
- z->msg_check_fail("reference ID does not match from "
- "first init response");
- return TEST_FINISHED;
- }
- }
- else
- {
- if (!init->referenceId)
- z->msg_check_fail("missing referenceID from "
- "second init response");
- else if (init->referenceId->len != REFID_LEN2
- || memcmp(init->referenceId->buf, REFID_BUF2, REFID_LEN2))
- z->msg_check_fail("reference ID does not match from "
- "second init response");
- }
-
- if (!result)
- {
- z->msg_check_fail("init rejected (result false)");
- return TEST_FINISHED;
- }
- else
- {
- if (m_init_response_no == 0)
- {
- m_init_response_no++;
- return TEST_CONTINUE;
- }
- else
- z->msg_check_ok();
- }
+ Z_InitResponse *init = gdu->u.z3950->u.initResponse;
+ int ver = z->initResponseGetVersion(init);
+ int result = init->result ? *init->result : 0;
+
+ if (m_init_response_no == 0)
+ {
+ if (!init->referenceId)
+ {
+ z->msg_check_fail("missing referenceID from "
+ "first init response");
+ return TEST_FINISHED;
+ }
+ else if (init->referenceId->len != REFID_LEN1
+ || memcmp(init->referenceId->buf, REFID_BUF1, REFID_LEN1))
+ {
+ z->msg_check_fail("reference ID does not match from "
+ "first init response");
+ return TEST_FINISHED;
+ }
+ }
+ else
+ {
+ if (!init->referenceId)
+ z->msg_check_fail("missing referenceID from "
+ "second init response");
+ else if (init->referenceId->len != REFID_LEN2
+ || memcmp(init->referenceId->buf, REFID_BUF2, REFID_LEN2))
+ z->msg_check_fail("reference ID does not match from "
+ "second init response");
+ }
+
+ if (!result)
+ {
+ z->msg_check_fail("init rejected (result false)");
+ return TEST_FINISHED;
+ }
+ else
+ {
+ if (m_init_response_no == 0)
+ {
+ m_init_response_no++;
+ return TEST_CONTINUE;
+ }
+ else
+ z->msg_check_ok();
+ }
}
else
- z->msg_check_fail("did not receive init response as expected");
+ z->msg_check_fail("did not receive init response as expected");
return TEST_FINISHED;
}
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+
* Copyright (c) 2004, Index Data.
* See the file LICENSE for details.
*
- * $Id: test-init-06.cpp,v 1.3 2004-12-13 20:50:54 adam Exp $
+ * $Id: test-init-06.cpp,v 1.4 2005-06-25 15:53:21 adam Exp $
*/
#include <yaz/log.h>
ODR_MASK_ZERO(init->options);
int i;
for (i = 0; i <= 24; i++)
- ODR_MASK_SET(init->options, i);
+ ODR_MASK_SET(init->options, i);
int r = z->send_Z_PDU(apdu, &len);
if (r < 0)
{
- z->msg_check_fail("unable to send init request");
- return TEST_FINISHED;
+ z->msg_check_fail("unable to send init request");
+ return TEST_FINISHED;
}
return TEST_CONTINUE;
}
Zlint_code Zlint_test_init_06::recv_gdu(Zlint *z, Z_GDU *gdu)
{
if (gdu->which == Z_GDU_Z3950 &&
- gdu->u.z3950 && gdu->u.z3950->which == Z_APDU_initResponse)
+ gdu->u.z3950 && gdu->u.z3950->which == Z_APDU_initResponse)
{
- Z_InitResponse *init = gdu->u.z3950->u.initResponse;
- int ver = z->initResponseGetVersion(init);
- int result = init->result ? *init->result : 0;
-
- if (init->options)
- {
- int i;
- int no_set = 0;
- int no_reset = 0;
- for (i = 0; i <= 24; i++)
- if (ODR_MASK_GET(init->options, i))
- no_set++;
- else
- no_reset++;
- if (no_set < 2)
- {
- z->msg_check_fail("suspicuously few option bits set");
- return TEST_FINISHED;
- }
- if (no_reset == 0)
- {
- z->msg_check_fail("suspicuously many option bits set");
- return TEST_FINISHED;
- }
- }
- z->msg_check_ok();
+ Z_InitResponse *init = gdu->u.z3950->u.initResponse;
+ int ver = z->initResponseGetVersion(init);
+ int result = init->result ? *init->result : 0;
+
+ if (init->options)
+ {
+ int i;
+ int no_set = 0;
+ int no_reset = 0;
+ for (i = 0; i <= 24; i++)
+ if (ODR_MASK_GET(init->options, i))
+ no_set++;
+ else
+ no_reset++;
+ if (no_set < 2)
+ {
+ z->msg_check_fail("suspicuously few option bits set");
+ return TEST_FINISHED;
+ }
+ if (no_reset == 0)
+ {
+ z->msg_check_fail("suspicuously many option bits set");
+ return TEST_FINISHED;
+ }
+ }
+ z->msg_check_ok();
}
else
- z->msg_check_fail("did not receive init response as expected");
+ z->msg_check_fail("did not receive init response as expected");
return TEST_FINISHED;
}
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+
* Copyright (c) 2004, Index Data.
* See the file LICENSE for details.
*
- * $Id: test-init-07.cpp,v 1.3 2004-12-13 20:50:54 adam Exp $
+ * $Id: test-init-07.cpp,v 1.4 2005-06-25 15:53:21 adam Exp $
*/
#include <yaz/log.h>
yaz_oi_APDU(apdu, &oi);
if (!oi)
{
- z->msg_check_fail("encoding failure");
- return TEST_FINISHED;
+ z->msg_check_fail("encoding failure");
+ return TEST_FINISHED;
}
else
{
- Z_OtherInformationUnit *p0;
- const char *negotiationCharset[] = {
- "UTF-8",
- "UTF-16",
- "UCS-2",
- "UCS-4",
- "ISO-8859-1"
- };
- char *yazLang = 0;
-
- if ((p0=yaz_oi_update(oi, z->odr_encode(), NULL, 0, 0))) {
- ODR_MASK_SET(init->options, Z_Options_negotiationModel);
-
- p0->which = Z_OtherInfo_externallyDefinedInfo;
- p0->information.externallyDefinedInfo =
-
- yaz_set_proposal_charneg(
- z->odr_encode(),
- negotiationCharset, 5,
- (const char**)&yazLang, yazLang ? 1 : 0, 1);
- }
+ Z_OtherInformationUnit *p0;
+ const char *negotiationCharset[] = {
+ "UTF-8",
+ "UTF-16",
+ "UCS-2",
+ "UCS-4",
+ "ISO-8859-1"
+ };
+ char *yazLang = 0;
+
+ if ((p0=yaz_oi_update(oi, z->odr_encode(), NULL, 0, 0))) {
+ ODR_MASK_SET(init->options, Z_Options_negotiationModel);
+
+ p0->which = Z_OtherInfo_externallyDefinedInfo;
+ p0->information.externallyDefinedInfo =
+
+ yaz_set_proposal_charneg(
+ z->odr_encode(),
+ negotiationCharset, 5,
+ (const char**)&yazLang, yazLang ? 1 : 0, 1);
+ }
}
int r = z->send_Z_PDU(apdu, &len);
if (r < 0)
{
- z->msg_check_fail("unable to send init request");
- return TEST_FINISHED;
+ z->msg_check_fail("unable to send init request");
+ return TEST_FINISHED;
}
return TEST_CONTINUE;
}
Zlint_code Zlint_test_init_07::recv_gdu(Zlint *z, Z_GDU *gdu)
{
if (gdu->which == Z_GDU_Z3950 &&
- gdu->u.z3950 && gdu->u.z3950->which == Z_APDU_initResponse)
+ gdu->u.z3950 && gdu->u.z3950->which == Z_APDU_initResponse)
{
- Z_InitResponse *init = gdu->u.z3950->u.initResponse;
- int ver = z->initResponseGetVersion(init);
- int result = init->result ? *init->result : 0;
+ Z_InitResponse *init = gdu->u.z3950->u.initResponse;
+ int ver = z->initResponseGetVersion(init);
+ int result = init->result ? *init->result : 0;
- if (ODR_MASK_GET(init->options, Z_Options_negotiationModel))
- {
- Z_CharSetandLanguageNegotiation *p =
- yaz_get_charneg_record(init->otherInfo);
-
- if (p) {
-
- char *charset=NULL, *lang=NULL;
- int selected;
- NMEM m = nmem_create();
-
- yaz_get_response_charneg(m, p, &charset, &lang,
- &selected);
- z->msg_check_ok();
- z->msg_check_info("Accepted character set : %s", charset);
- z->msg_check_info("Accepted code language : %s", lang ? lang : "none");
- z->msg_check_info("Accepted records in ...: %d", selected );
- nmem_destroy(m);
- return TEST_FINISHED;
- }
- }
- z->msg_check_notapp();
+ if (ODR_MASK_GET(init->options, Z_Options_negotiationModel))
+ {
+ Z_CharSetandLanguageNegotiation *p =
+ yaz_get_charneg_record(init->otherInfo);
+
+ if (p) {
+
+ char *charset=NULL, *lang=NULL;
+ int selected;
+ NMEM m = nmem_create();
+
+ yaz_get_response_charneg(m, p, &charset, &lang,
+ &selected);
+ z->msg_check_ok();
+ z->msg_check_info("Accepted character set : %s", charset);
+ z->msg_check_info("Accepted code language : %s", lang ? lang : "none");
+ z->msg_check_info("Accepted records in ...: %d", selected );
+ nmem_destroy(m);
+ return TEST_FINISHED;
+ }
+ }
+ z->msg_check_notapp();
}
else
- z->msg_check_fail("did not receive init response as expected");
+ z->msg_check_fail("did not receive init response as expected");
return TEST_FINISHED;
}
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+
* Copyright (c) 2004, Index Data.
* See the file LICENSE for details.
*
- * $Id: test-init-08.cpp,v 1.3 2004-12-13 20:50:54 adam Exp $
+ * $Id: test-init-08.cpp,v 1.4 2005-06-25 15:53:21 adam Exp $
*/
#include <yaz/log.h>
int r = z->send_Z_PDU(apdu, &len);
if (r < 0)
{
- z->msg_check_fail("unable to send init request");
- return TEST_FINISHED;
+ z->msg_check_fail("unable to send init request");
+ return TEST_FINISHED;
}
return TEST_CONTINUE;
}
Zlint_code Zlint_test_init_08::recv_gdu(Zlint *z, Z_GDU *gdu)
{
if (gdu->which == Z_GDU_Z3950 &&
- gdu->u.z3950 && gdu->u.z3950->which == Z_APDU_initResponse)
+ gdu->u.z3950 && gdu->u.z3950->which == Z_APDU_initResponse)
{
- Z_InitResponse *init = gdu->u.z3950->u.initResponse;
- int ver = z->initResponseGetVersion(init);
- int result = init->result ? *init->result : 0;
-
- if (m_no * m_no * 100000 + 2000 < *init->maximumRecordSize)
- z->msg_check_fail("maximumRecordSize bigger than proposed size");
- if (m_no * m_no * 100000 + 2000 < *init->preferredMessageSize)
- z->msg_check_fail("preferredMessage bigger than proposed size");
- z->msg_check_ok();
- if (m_no < 2)
- {
- m_no++;
- return TEST_REOPEN;
- }
+ Z_InitResponse *init = gdu->u.z3950->u.initResponse;
+ int ver = z->initResponseGetVersion(init);
+ int result = init->result ? *init->result : 0;
+
+ if (m_no * m_no * 100000 + 2000 < *init->maximumRecordSize)
+ z->msg_check_fail("maximumRecordSize bigger than proposed size");
+ if (m_no * m_no * 100000 + 2000 < *init->preferredMessageSize)
+ z->msg_check_fail("preferredMessage bigger than proposed size");
+ z->msg_check_ok();
+ if (m_no < 2)
+ {
+ m_no++;
+ return TEST_REOPEN;
+ }
}
else
- z->msg_check_fail("did not receive init response as expected");
+ z->msg_check_fail("did not receive init response as expected");
return TEST_FINISHED;
}
z->msg_check_fail("target closed connection");
if (m_no < 2)
{
- m_no++;
- return TEST_REOPEN;
+ m_no++;
+ return TEST_REOPEN;
}
return TEST_FINISHED;
}
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+
* Copyright (c) 2004, Index Data.
* See the file LICENSE for details.
*
- * $Id: test-scan-01.cpp,v 1.3 2004-12-13 20:50:54 adam Exp $
+ * $Id: test-scan-01.cpp,v 1.4 2005-06-25 15:53:21 adam Exp $
*/
#include <yaz/log.h>
int r = z->send_Z_PDU(apdu, &len);
if (r < 0)
{
- z->msg_check_fail("unable to send init request");
- return TEST_FINISHED;
+ z->msg_check_fail("unable to send init request");
+ return TEST_FINISHED;
}
return TEST_CONTINUE;
}
{
if (try_scan[m_scan_no])
{
- int len;
- z->msg_check_for("scan support %s", try_scan[m_scan_no]);
+ int len;
+ z->msg_check_for("scan support %s", try_scan[m_scan_no]);
- Z_APDU *apdu = zget_APDU(z->odr_encode(), Z_APDU_scanRequest);
- YAZ_PQF_Parser pqf_parser = yaz_pqf_create ();
- Z_ScanRequest *sr = apdu->u.scanRequest;
- sr->termListAndStartPoint = yaz_pqf_scan(pqf_parser,
- z->odr_encode(),
- &sr->attributeSet,
- try_scan[m_scan_no]);
-
- z->getDatabase(&sr->databaseNames, &sr->num_databaseNames);
-
- yaz_pqf_destroy (pqf_parser);
- z->send_Z_PDU(apdu, &len);
- return TEST_CONTINUE;
+ Z_APDU *apdu = zget_APDU(z->odr_encode(), Z_APDU_scanRequest);
+ YAZ_PQF_Parser pqf_parser = yaz_pqf_create ();
+ Z_ScanRequest *sr = apdu->u.scanRequest;
+ sr->termListAndStartPoint = yaz_pqf_scan(pqf_parser,
+ z->odr_encode(),
+ &sr->attributeSet,
+ try_scan[m_scan_no]);
+
+ z->getDatabase(&sr->databaseNames, &sr->num_databaseNames);
+
+ yaz_pqf_destroy (pqf_parser);
+ z->send_Z_PDU(apdu, &len);
+ return TEST_CONTINUE;
}
else
- return TEST_FINISHED;
+ return TEST_FINISHED;
}
Zlint_code Zlint_test_scan_01::recv_gdu(Zlint *z, Z_GDU *gdu)
{
if (gdu->which == Z_GDU_Z3950 &&
- gdu->u.z3950 && gdu->u.z3950->which == Z_APDU_initResponse)
+ gdu->u.z3950 && gdu->u.z3950->which == Z_APDU_initResponse)
{
- Z_InitResponse *init = gdu->u.z3950->u.initResponse;
- int ver = z->initResponseGetVersion(init);
- int result = init->result ? *init->result : 0;
- if (ver > 3 || ver < 2)
- z->msg_check_fail("got version %d, expected 2 or 3", ver);
- if (!result)
- {
- z->msg_check_fail("init rejected (result false)");
- return TEST_FINISHED;
- }
- else if (!ODR_MASK_GET(init->options, Z_Options_scan))
- {
- z->msg_check_notapp();
- z->msg_check_info("scan unsupported");
- return TEST_FINISHED;
- }
- else
- {
- sendTest(z);
- return TEST_CONTINUE;
- }
+ Z_InitResponse *init = gdu->u.z3950->u.initResponse;
+ int ver = z->initResponseGetVersion(init);
+ int result = init->result ? *init->result : 0;
+ if (ver > 3 || ver < 2)
+ z->msg_check_fail("got version %d, expected 2 or 3", ver);
+ if (!result)
+ {
+ z->msg_check_fail("init rejected (result false)");
+ return TEST_FINISHED;
+ }
+ else if (!ODR_MASK_GET(init->options, Z_Options_scan))
+ {
+ z->msg_check_notapp();
+ z->msg_check_info("scan unsupported");
+ return TEST_FINISHED;
+ }
+ else
+ {
+ sendTest(z);
+ return TEST_CONTINUE;
+ }
}
else if (gdu->u.z3950 && gdu->u.z3950->which == Z_APDU_scanResponse)
{
- Z_ScanResponse *sr = gdu->u.z3950->u.scanResponse;
- if (sr->entries->nonsurrogateDiagnostics)
- {
- z->msg_check_ok();
- z->msg_check_info("scan NSD for %s", try_scan[m_scan_no]);
- }
- else if (sr->entries->entries && sr->entries->num_entries > 0)
- {
- z->msg_check_ok();
- }
- else
- {
- z->msg_check_fail("scan no entries/diagnostics for %s",
- try_scan[m_scan_no]);
- }
- m_scan_no++;
- return sendTest(z);
+ Z_ScanResponse *sr = gdu->u.z3950->u.scanResponse;
+ if (sr->entries->nonsurrogateDiagnostics)
+ {
+ z->msg_check_ok();
+ z->msg_check_info("scan NSD for %s", try_scan[m_scan_no]);
+ }
+ else if (sr->entries->entries && sr->entries->num_entries > 0)
+ {
+ z->msg_check_ok();
+ }
+ else
+ {
+ z->msg_check_fail("scan no entries/diagnostics for %s",
+ try_scan[m_scan_no]);
+ }
+ m_scan_no++;
+ return sendTest(z);
}
else
- z->msg_check_fail("did not receive init response as expected");
+ z->msg_check_fail("did not receive init response as expected");
return TEST_FINISHED;
}
z->msg_check_fail("target closed connection");
return TEST_FINISHED;
}
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+
* Copyright (c) 2004, Index Data.
* See the file LICENSE for details.
*
- * $Id: test-search-01.cpp,v 1.4 2004-12-13 20:50:54 adam Exp $
+ * $Id: test-search-01.cpp,v 1.5 2005-06-25 15:53:21 adam Exp $
*/
#include <yaz/log.h>
int r = z->send_Z_PDU(apdu, &len);
if (r < 0)
{
- z->msg_check_fail("unable to send init request");
- return TEST_FINISHED;
+ z->msg_check_fail("unable to send init request");
+ return TEST_FINISHED;
}
return TEST_CONTINUE;
}
{
if (!m_got_result_set)
{
- Z_APDU *apdu = zget_APDU(z->odr_encode(), Z_APDU_searchRequest);
- Z_SearchRequest *sr;
- sr = apdu->u.searchRequest;
- sr->query = (Z_Query *) odr_malloc(z->odr_encode(), sizeof(*sr->query));
- if (try_query[m_query_no] && sr)
- {
- sr->query->which = Z_Query_type_1;
- Z_RPNQuery *rpn;
- YAZ_PQF_Parser pqf_parser = yaz_pqf_create ();
-
- z->getDatabase(&sr->databaseNames, &sr->num_databaseNames);
-
- rpn = yaz_pqf_parse(pqf_parser, z->odr_encode(),
- try_query[m_query_no]);
-
- yaz_pqf_destroy (pqf_parser);
-
- if (!rpn)
- {
- z->msg_check_fail("Query %s invalid", try_query[m_query_no]);
- return TEST_FINISHED;
- }
- int len;
- sr->query->u.type_1 = rpn;
- z->send_Z_PDU(apdu, &len);
- }
- else
- {
- z->msg_check_notapp();
- z->msg_check_info("unable to get any hit count");
- return TEST_FINISHED;
- }
+ Z_APDU *apdu = zget_APDU(z->odr_encode(), Z_APDU_searchRequest);
+ Z_SearchRequest *sr;
+ sr = apdu->u.searchRequest;
+ sr->query = (Z_Query *) odr_malloc(z->odr_encode(), sizeof(*sr->query));
+ if (try_query[m_query_no] && sr)
+ {
+ sr->query->which = Z_Query_type_1;
+ Z_RPNQuery *rpn;
+ YAZ_PQF_Parser pqf_parser = yaz_pqf_create ();
+
+ z->getDatabase(&sr->databaseNames, &sr->num_databaseNames);
+
+ rpn = yaz_pqf_parse(pqf_parser, z->odr_encode(),
+ try_query[m_query_no]);
+
+ yaz_pqf_destroy (pqf_parser);
+
+ if (!rpn)
+ {
+ z->msg_check_fail("Query %s invalid", try_query[m_query_no]);
+ return TEST_FINISHED;
+ }
+ int len;
+ sr->query->u.type_1 = rpn;
+ z->send_Z_PDU(apdu, &len);
+ }
+ else
+ {
+ z->msg_check_notapp();
+ z->msg_check_info("unable to get any hit count");
+ return TEST_FINISHED;
+ }
}
else if (m_got_result_set && try_syntax[m_record_syntax_no])
{
- int len;
- Z_APDU *apdu = zget_APDU(z->odr_encode(), Z_APDU_presentRequest);
- Z_PresentRequest *pr = apdu->u.presentRequest;
- *pr->numberOfRecordsRequested = 1;
- *pr->resultSetStartPoint = 1;
+ int len;
+ Z_APDU *apdu = zget_APDU(z->odr_encode(), Z_APDU_presentRequest);
+ Z_PresentRequest *pr = apdu->u.presentRequest;
+ *pr->numberOfRecordsRequested = 1;
+ *pr->resultSetStartPoint = 1;
- z->msg_check_for("record syntax %s", try_syntax[m_record_syntax_no]);
- pr->preferredRecordSyntax =
- yaz_str_to_z3950oid(z->odr_encode(), CLASS_RECSYN,
- try_syntax[m_record_syntax_no]);
- z->send_Z_PDU(apdu, &len);
- return TEST_CONTINUE;
+ z->msg_check_for("record syntax %s", try_syntax[m_record_syntax_no]);
+ pr->preferredRecordSyntax =
+ yaz_str_to_z3950oid(z->odr_encode(), CLASS_RECSYN,
+ try_syntax[m_record_syntax_no]);
+ z->send_Z_PDU(apdu, &len);
+ return TEST_CONTINUE;
}
else if(m_got_result_set && !try_syntax[m_record_syntax_no])
{
- Z_APDU *apdu = zget_APDU(z->odr_encode(), Z_APDU_sortRequest);
- if (apdu && try_sort[m_sort_no])
- {
- z->msg_check_for("sort %s", try_sort[m_sort_no]);
+ Z_APDU *apdu = zget_APDU(z->odr_encode(), Z_APDU_sortRequest);
+ if (apdu && try_sort[m_sort_no])
+ {
+ z->msg_check_for("sort %s", try_sort[m_sort_no]);
- char *setstring = "default";
- int len;
- Z_SortRequest *sr = apdu->u.sortRequest;
-
- sr->num_inputResultSetNames = 1;
- sr->num_inputResultSetNames = 1;
- sr->inputResultSetNames = (Z_InternationalString **)
- odr_malloc (z->odr_encode(), sizeof(*sr->inputResultSetNames));
- sr->inputResultSetNames[0] = odr_strdup (z->odr_encode(), setstring);
- sr->sortedResultSetName = odr_strdup(z->odr_encode(), setstring);
- sr->sortSequence = yaz_sort_spec(z->odr_encode(), try_sort[m_sort_no]);
- z->send_Z_PDU(apdu, &len);
- }
- else
- return TEST_FINISHED;
+ char *setstring = "default";
+ int len;
+ Z_SortRequest *sr = apdu->u.sortRequest;
+
+ sr->num_inputResultSetNames = 1;
+ sr->num_inputResultSetNames = 1;
+ sr->inputResultSetNames = (Z_InternationalString **)
+ odr_malloc (z->odr_encode(), sizeof(*sr->inputResultSetNames));
+ sr->inputResultSetNames[0] = odr_strdup (z->odr_encode(), setstring);
+ sr->sortedResultSetName = odr_strdup(z->odr_encode(), setstring);
+ sr->sortSequence = yaz_sort_spec(z->odr_encode(), try_sort[m_sort_no]);
+ z->send_Z_PDU(apdu, &len);
+ }
+ else
+ return TEST_FINISHED;
}
else
{
- printf ("finished...\n");
- return TEST_FINISHED;
+ printf ("finished...\n");
+ return TEST_FINISHED;
}
return TEST_CONTINUE;
}
Zlint_code Zlint_test_search_01::recv_gdu(Zlint *z, Z_GDU *gdu)
{
if (gdu->which == Z_GDU_Z3950 &&
- gdu->u.z3950 && gdu->u.z3950->which == Z_APDU_initResponse)
+ gdu->u.z3950 && gdu->u.z3950->which == Z_APDU_initResponse)
{
- Z_InitResponse *init = gdu->u.z3950->u.initResponse;
- int ver = z->initResponseGetVersion(init);
- int result = init->result ? *init->result : 0;
- if (!result)
- {
- z->msg_check_notapp();
- z->msg_check_info ("init rejected (result false)");
- return TEST_FINISHED;
- }
- return sendTest(z);
+ Z_InitResponse *init = gdu->u.z3950->u.initResponse;
+ int ver = z->initResponseGetVersion(init);
+ int result = init->result ? *init->result : 0;
+ if (!result)
+ {
+ z->msg_check_notapp();
+ z->msg_check_info ("init rejected (result false)");
+ return TEST_FINISHED;
+ }
+ return sendTest(z);
}
else if (gdu->which == Z_GDU_Z3950 &&
- gdu->u.z3950 && gdu->u.z3950->which == Z_APDU_searchResponse)
+ gdu->u.z3950 && gdu->u.z3950->which == Z_APDU_searchResponse)
{
- Z_SearchResponse *sr = gdu->u.z3950->u.searchResponse;
- if (sr->records && (sr->records->which == Z_Records_NSD
- ||
- sr->records->which == Z_Records_multipleNSD))
- m_query_no++;
- else if (!sr->resultCount || *sr->resultCount == 0)
- m_query_no++;
- else
- {
- z->msg_check_ok();
- z->msg_check_info("got %d result count with %s", *sr->resultCount,
- try_query[m_query_no]);
- m_got_result_set = 1;
- }
- return sendTest(z);
+ Z_SearchResponse *sr = gdu->u.z3950->u.searchResponse;
+ if (sr->records && (sr->records->which == Z_Records_NSD
+ ||
+ sr->records->which == Z_Records_multipleNSD))
+ m_query_no++;
+ else if (!sr->resultCount || *sr->resultCount == 0)
+ m_query_no++;
+ else
+ {
+ z->msg_check_ok();
+ z->msg_check_info("got %d result count with %s", *sr->resultCount,
+ try_query[m_query_no]);
+ m_got_result_set = 1;
+ }
+ return sendTest(z);
}
else if (gdu->which == Z_GDU_Z3950 &&
- gdu->u.z3950 && gdu->u.z3950->which == Z_APDU_presentResponse)
+ gdu->u.z3950 && gdu->u.z3950->which == Z_APDU_presentResponse)
{
- Z_PresentResponse *sr = gdu->u.z3950->u.presentResponse;
- if (sr->records && (sr->records->which == Z_Records_NSD
- ||
- sr->records->which == Z_Records_multipleNSD))
- {
- z->msg_check_ok();
- z->msg_check_info("present returned NSD for %s",
- try_syntax[m_record_syntax_no]);
- }
- else if (sr->records && sr->records->which == Z_Records_DBOSD
- && sr->records->u.databaseOrSurDiagnostics->num_records>0
- && sr->records->u.databaseOrSurDiagnostics->records[0])
- {
- if (sr->records->u.databaseOrSurDiagnostics->records[0]->which == Z_NamePlusRecord_databaseRecord)
- {
- Z_External *ext = sr->records->u.databaseOrSurDiagnostics->records[0]->u.databaseRecord;
- Odr_oid *expectRecordSyntax =
- yaz_str_to_z3950oid(z->odr_decode(), CLASS_RECSYN,
- try_syntax[m_record_syntax_no]);
- if (oid_oidcmp(expectRecordSyntax,
- ext->direct_reference))
- {
- z->msg_check_fail("Got Record in different syntax "
- "from that requested %s",
- try_syntax[m_record_syntax_no]);
- }
- else
- z->msg_check_ok();
- }
- else if (sr->records->u.databaseOrSurDiagnostics->records[0]->which == Z_NamePlusRecord_surrogateDiagnostic)
- {
- z->msg_check_ok();
- z->msg_check_info("present returned SD %s",
- try_syntax[m_record_syntax_no]);
- }
- else
- {
- z->msg_check_ok();
- z->msg_check_info("present returned fragment %s",
- try_syntax[m_record_syntax_no]);
- }
- }
- else
- {
- z->msg_check_fail("present returned no records or diagnostics");
- }
- m_record_syntax_no++;
- return sendTest(z);
+ Z_PresentResponse *sr = gdu->u.z3950->u.presentResponse;
+ if (sr->records && (sr->records->which == Z_Records_NSD
+ ||
+ sr->records->which == Z_Records_multipleNSD))
+ {
+ z->msg_check_ok();
+ z->msg_check_info("present returned NSD for %s",
+ try_syntax[m_record_syntax_no]);
+ }
+ else if (sr->records && sr->records->which == Z_Records_DBOSD
+ && sr->records->u.databaseOrSurDiagnostics->num_records>0
+ && sr->records->u.databaseOrSurDiagnostics->records[0])
+ {
+ if (sr->records->u.databaseOrSurDiagnostics->records[0]->which == Z_NamePlusRecord_databaseRecord)
+ {
+ Z_External *ext = sr->records->u.databaseOrSurDiagnostics->records[0]->u.databaseRecord;
+ Odr_oid *expectRecordSyntax =
+ yaz_str_to_z3950oid(z->odr_decode(), CLASS_RECSYN,
+ try_syntax[m_record_syntax_no]);
+ if (oid_oidcmp(expectRecordSyntax,
+ ext->direct_reference))
+ {
+ z->msg_check_fail("Got Record in different syntax "
+ "from that requested %s",
+ try_syntax[m_record_syntax_no]);
+ }
+ else
+ z->msg_check_ok();
+ }
+ else if (sr->records->u.databaseOrSurDiagnostics->records[0]->which == Z_NamePlusRecord_surrogateDiagnostic)
+ {
+ z->msg_check_ok();
+ z->msg_check_info("present returned SD %s",
+ try_syntax[m_record_syntax_no]);
+ }
+ else
+ {
+ z->msg_check_ok();
+ z->msg_check_info("present returned fragment %s",
+ try_syntax[m_record_syntax_no]);
+ }
+ }
+ else
+ {
+ z->msg_check_fail("present returned no records or diagnostics");
+ }
+ m_record_syntax_no++;
+ return sendTest(z);
}
else if (gdu->which == Z_GDU_Z3950 &&
- gdu->u.z3950 && gdu->u.z3950->which == Z_APDU_sortResponse)
+ gdu->u.z3950 && gdu->u.z3950->which == Z_APDU_sortResponse)
{
- Z_SortResponse *sr = gdu->u.z3950->u.sortResponse;
- z->msg_check_ok();
- if (sr->diagnostics)
- z->msg_check_info( "sort NSD for %s", try_sort[m_sort_no]);
- m_sort_no++;
- return sendTest(z);
+ Z_SortResponse *sr = gdu->u.z3950->u.sortResponse;
+ z->msg_check_ok();
+ if (sr->diagnostics)
+ z->msg_check_info( "sort NSD for %s", try_sort[m_sort_no]);
+ m_sort_no++;
+ return sendTest(z);
}
else
- z->msg_check_fail("did not receive init/search/present response "
- "as expected");
+ z->msg_check_fail("did not receive init/search/present response "
+ "as expected");
return TEST_FINISHED;
}
z->msg_check_fail("target closed connection");
return TEST_FINISHED;
}
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+
* Copyright (c) 2004, Index Data.
* See the file LICENSE for details.
*
- * $Id: zlint.cpp,v 1.10 2005-06-08 13:28:06 adam Exp $
+ * $Id: zlint.cpp,v 1.11 2005-06-25 15:53:21 adam Exp $
*/
#include <stdio.h>
{
while (m_tests)
{
- Zlint_t *t = m_tests;
- m_tests = t->m_next;
- delete t;
+ Zlint_t *t = m_tests;
+ m_tests = t->m_next;
+ delete t;
}
xfree(m_host);
xfree(m_database);
const char *basep;
cs_get_host_args(m_host, &basep);
if (!basep || !*basep)
- basep = "Default";
+ basep = "Default";
xfree(m_database);
m_database = xstrdup(basep);
}
{
if (m_cur_test)
{
- if (m_cur_test->m_t->recv_fail(this, 2) != TEST_FINISHED)
- {
- close();
- client(m_host);
- timeout(30);
- return;
- }
+ if (m_cur_test->m_t->recv_fail(this, 2) != TEST_FINISHED)
+ {
+ close();
+ client(m_host);
+ timeout(30);
+ return;
+ }
}
close_goto_next();
}
{
if (m_cur_test)
{
- if (m_cur_test->m_t->recv_fail(this, 1) != TEST_FINISHED)
- {
- close();
- client(m_host);
- timeout(30);
- return;
- }
+ if (m_cur_test->m_t->recv_fail(this, 1) != TEST_FINISHED)
+ {
+ close();
+ client(m_host);
+ timeout(30);
+ return;
+ }
}
close_goto_next();
}
{
if (m_cur_test)
{
- if (m_cur_test->m_t->init(this) != TEST_FINISHED)
- return;
+ if (m_cur_test->m_t->init(this) != TEST_FINISHED)
+ return;
}
close_goto_next();
}
{
if (m_cur_test)
{
- int r = m_cur_test->m_t->recv_gdu(this, gdu);
- if (r == TEST_CONTINUE)
- return;
- if (r == TEST_REOPEN)
- {
- close();
- client(m_host);
- timeout(30);
- return;
- }
+ int r = m_cur_test->m_t->recv_gdu(this, gdu);
+ if (r == TEST_CONTINUE)
+ return;
+ if (r == TEST_REOPEN)
+ {
+ close();
+ client(m_host);
+ timeout(30);
+ return;
+ }
}
close_goto_next();
}
{
close();
if (m_cur_test)
- m_cur_test = m_cur_test->m_next;
+ m_cur_test = m_cur_test->m_next;
if (m_cur_test)
- client(m_host);
+ client(m_host);
timeout(30);
}
Z_ReferenceId *Zlint::mk_refid(const char *buf, int len)
{
Z_ReferenceId *id =
- (Z_ReferenceId *) odr_malloc(odr_encode(), sizeof(*id));
+ (Z_ReferenceId *) odr_malloc(odr_encode(), sizeof(*id));
id->size = id->len = len;
id->buf = (unsigned char*) odr_malloc(odr_encode(), len);
memcpy(id->buf, buf, len);
int off = 0;
int i;
for (i = 0; i<12; i++)
- if (ODR_MASK_GET(init->protocolVersion, no))
- {
- no = i+1;
- }
- else
- off = 1;
+ if (ODR_MASK_GET(init->protocolVersion, no))
+ {
+ no = i+1;
+ }
+ else
+ off = 1;
return no;
}
{
Zlint_t **d = &m_tests;
while (*d)
- d = &(*d)->m_next;
+ d = &(*d)->m_next;
*d = new Zlint_t(t);
if (!m_cur_test)
- m_cur_test = m_tests;
+ m_cur_test = m_tests;
}
void Zlint::msg_check_for(const char *fmt, ...)
{
if (!m_cur_test->m_test_reported)
{
- m_cur_test->m_test_ok = 1;
- m_cur_test->m_test_reported = 1;
- printf ("OK\n");
+ m_cur_test->m_test_ok = 1;
+ m_cur_test->m_test_reported = 1;
+ printf ("OK\n");
}
}
{
if (!m_cur_test->m_test_reported)
{
- m_cur_test->m_test_ok = 0;
- m_cur_test->m_test_reported = 1;
- printf ("Fail\n");
+ m_cur_test->m_test_ok = 0;
+ m_cur_test->m_test_reported = 1;
+ printf ("Fail\n");
}
va_list ap;
va_start(ap, fmt);
{
if (!m_cur_test->m_test_reported)
{
- m_cur_test->m_test_ok = 2;
- m_cur_test->m_test_reported = 1;
- printf ("Unsupported\n");
+ m_cur_test->m_test_ok = 2;
+ m_cur_test->m_test_reported = 1;
+ printf ("Unsupported\n");
}
}
z->msg_check_fail("target closed connection");
return TEST_FINISHED;
}
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+
* Copyright (c) 2004, Index Data.
* See the file LICENSE for details.
*
- * $Id: zlint.h,v 1.3 2005-06-08 13:28:06 adam Exp $
+ * $Id: zlint.h,v 1.4 2005-06-25 15:53:21 adam Exp $
*/
#include <yaz++/z-assoc.h>
Zlint_code recv_gdu(Zlint *z, Z_GDU *gdu);
Zlint_code recv_fail(Zlint *z, int reason);
};
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+
const record rec(rs, 0);
std::cout << rec.render() << std::endl;
}
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+
-// $Id: zclient.cpp,v 1.7 2003-07-02 10:25:13 adam Exp $
+// $Id: zclient.cpp,v 1.8 2005-06-25 15:53:21 adam Exp $
// Simple sample client
-#include <stdlib.h> // for atoi()
+#include <stdlib.h> // for atoi()
#include <iostream>
#include "zoom.h"
int main(int argc, char **argv)
{
if (argc != 5) {
- std::cerr << "Usage: " <<
- argv[0] << " <host> <port> <dbname> <@prefix-search>\n";
- return 1;
+ std::cerr << "Usage: " <<
+ argv[0] << " <host> <port> <dbname> <@prefix-search>\n";
+ return 1;
}
using namespace ZOOM;
try {
- connection conn(argv[1], atoi(argv[2]));
- conn.option("databaseName", argv[3]);
- conn.option("preferredRecordSyntax",
- record::syntax(record::syntax::XML));
- prefixQuery pq(argv[4]);
- resultSet rs(conn, pq);
-
- size_t n = rs.size();
- std::cout << "found " << n << " records:\n";
- for (size_t i = 0; i < n; i++) {
- const record rec(rs, i);
- std::cout << "=== record " << i+1 <<
- " (record-syntax " << (std::string) rec.recsyn() << ")" <<
- " ===\n" << rec.render();
- }
+ connection conn(argv[1], atoi(argv[2]));
+ conn.option("databaseName", argv[3]);
+ conn.option("preferredRecordSyntax",
+ record::syntax(record::syntax::XML));
+ prefixQuery pq(argv[4]);
+ resultSet rs(conn, pq);
+
+ size_t n = rs.size();
+ std::cout << "found " << n << " records:\n";
+ for (size_t i = 0; i < n; i++) {
+ const record rec(rs, i);
+ std::cout << "=== record " << i+1 <<
+ " (record-syntax " << (std::string) rec.recsyn() << ")" <<
+ " ===\n" << rec.render();
+ }
} catch(bib1Exception& err) {
- std::cerr << argv[0] << ": bib1Exception " <<
- err.errmsg() << " (" << err.addinfo() << ")\n";
- return 2;
+ std::cerr << argv[0] << ": bib1Exception " <<
+ err.errmsg() << " (" << err.addinfo() << ")\n";
+ return 2;
} catch(ZOOM::exception& err) {
- std::cerr << argv[0] << ": exception " <<
- err.errmsg() << "\n";
- return 3;
+ std::cerr << argv[0] << ": exception " <<
+ err.errmsg() << "\n";
+ return 3;
}
return 0;
}
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+
-// $Header: /home/cvsroot/yaz++/zoom/zconn.cpp,v 1.8 2005-05-03 16:29:52 mike Exp $
+// $Header: /home/cvsroot/yaz++/zoom/zconn.cpp,v 1.9 2005-06-25 15:53:21 adam Exp $
// Z39.50 Connection class
namespace ZOOM {
connection::connection() {
- ZOOM_options o = ZOOM_options_create();
- c = ZOOM_connection_create(o);
+ ZOOM_options o = ZOOM_options_create();
+ c = ZOOM_connection_create(o);
}
void connection::connect(const std::string &hostname, int portnum) {
- const char *line_printer_size_hostname = hostname.c_str();
- //###cerr << "opening " << hostname << ":" << portnum << "\n";
- ZOOM_connection_connect(c, line_printer_size_hostname, portnum);
- //###cerr << "opened\n";
-
- int errcode;
- const char *errmsg; // unused: carries same info as `errcode'
- const char *addinfo;
- if ((errcode = ZOOM_connection_error(c, &errmsg, &addinfo)) != 0) {
- //###cerr << "oops: no connect, errcode=" << errcode << "\n";
- throw bib1Exception(errcode, addinfo);
- }
+ const char *line_printer_size_hostname = hostname.c_str();
+ //###cerr << "opening " << hostname << ":" << portnum << "\n";
+ ZOOM_connection_connect(c, line_printer_size_hostname, portnum);
+ //###cerr << "opened\n";
+
+ int errcode;
+ const char *errmsg; // unused: carries same info as `errcode'
+ const char *addinfo;
+ if ((errcode = ZOOM_connection_error(c, &errmsg, &addinfo)) != 0) {
+ //###cerr << "oops: no connect, errcode=" << errcode << "\n";
+ throw bib1Exception(errcode, addinfo);
+ }
}
connection::connection(const std::string &hostname, int portnum) {
- ZOOM_options o = ZOOM_options_create();
- c = ZOOM_connection_create(o);
- connect(hostname, portnum);
+ ZOOM_options o = ZOOM_options_create();
+ c = ZOOM_connection_create(o);
+ connect(hostname, portnum);
}
std::string connection::option(const std::string &key) const {
- const char* val = ZOOM_connection_option_get(c, key.c_str());
- return (val) ? val : std::string();
+ const char* val = ZOOM_connection_option_get(c, key.c_str());
+ return (val) ? val : std::string();
}
bool connection::option(const std::string &key, const std::string &val) {
- // No way to tell whether ZOOM_connection_option_set() accepts key
- ZOOM_connection_option_set(c, key.c_str(), val.c_str());
- return true;
+ // No way to tell whether ZOOM_connection_option_set() accepts key
+ ZOOM_connection_option_set(c, key.c_str(), val.c_str());
+ return true;
}
connection::~connection() {
- ZOOM_connection_destroy(c);
+ ZOOM_connection_destroy(c);
}
}
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+
-// $Header: /home/cvsroot/yaz++/zoom/zexcept.cpp,v 1.10 2003-09-22 12:30:01 mike Exp $
+// $Header: /home/cvsroot/yaz++/zoom/zexcept.cpp,v 1.11 2005-06-25 15:53:21 adam Exp $
// Z39.50 Exception classes
#include <iostream>
#include <errno.h>
-#include <string.h> // for strerror(), strlen(), strcpy()
+#include <string.h> // for strerror(), strlen(), strcpy()
#include <stdio.h>
#include "zoom.h"
namespace ZOOM {
exception::exception(int errcode) {
- code = errcode;
+ code = errcode;
}
exception::~exception() {
- // Nothing to do, but G++ requires this to be explicit anyway
+ // Nothing to do, but G++ requires this to be explicit anyway
}
int exception::errcode() const {
- return code;
+ return code;
}
std::string exception::errmsg() const {
- char buf[40];
- sprintf(buf, "error #%d", code);
- return buf;
+ char buf[40];
+ sprintf(buf, "error #%d", code);
+ return buf;
}
systemException::systemException() : exception(errno){
- code = errno;
+ code = errno;
}
std::string systemException::errmsg() const {
- // For thread safety on linux (and most unix systems), we need
- // to use the reentrant version of the error translation
- // function. Microsoft's strerror() is thread safe, since it
- // returns a pointer to thread local storage. Unfortunately
- // there several different reentrant versions. Here, we check
- // for glibc, since we are using gcc. It appears at least the
- // current version of gcc has strerror_r() available by
- // default.
- #ifdef __GLIBC__
- char buf[1024];
- // PJD: result not necessarily equal to buf
- const char* result = strerror_r(code, buf, sizeof(buf));
- if (result != 0)
- return result;
- return exception::errmsg();
- #else
- return strerror(code);
- #endif
+ // For thread safety on linux (and most unix systems), we need
+ // to use the reentrant version of the error translation
+ // function. Microsoft's strerror() is thread safe, since it
+ // returns a pointer to thread local storage. Unfortunately
+ // there several different reentrant versions. Here, we check
+ // for glibc, since we are using gcc. It appears at least the
+ // current version of gcc has strerror_r() available by
+ // default.
+ #ifdef __GLIBC__
+ char buf[1024];
+ // PJD: result not necessarily equal to buf
+ const char* result = strerror_r(code, buf, sizeof(buf));
+ if (result != 0)
+ return result;
+ return exception::errmsg();
+ #else
+ return strerror(code);
+ #endif
}
bib1Exception::bib1Exception(int errcode, const std::string &addinfo) :
- exception(errcode), info(addinfo) {
- // std::cerr << "WARNING: made bib1Exception(" << errcode << "=" <<
- // ZOOM_diag_str(errcode) << ", '" << addinfo << "')\n";
+ exception(errcode), info(addinfo) {
+ // std::cerr << "WARNING: made bib1Exception(" << errcode << "=" <<
+ // ZOOM_diag_str(errcode) << ", '" << addinfo << "')\n";
}
bib1Exception::~bib1Exception() {
- //fprintf(stderr, "deleting bib1Exception 0x%lx (%d, 0x%lx=%s)\n",
- //(long) this, code, (long) info, info);
- //delete info;
- // ### Don't actually do the deletion for now. Exception
- // reference semantics are too weird for me to grok so I'm
- // doing The Wrong Thing in the knowledge that it will more
- // or less work -- it just leaks memory. (Or does it?)
+ //fprintf(stderr, "deleting bib1Exception 0x%lx (%d, 0x%lx=%s)\n",
+ //(long) this, code, (long) info, info);
+ //delete info;
+ // ### Don't actually do the deletion for now. Exception
+ // reference semantics are too weird for me to grok so I'm
+ // doing The Wrong Thing in the knowledge that it will more
+ // or less work -- it just leaks memory. (Or does it?)
}
std::string bib1Exception::errmsg() const {
- return ZOOM_diag_str(code);
+ return ZOOM_diag_str(code);
}
std::string bib1Exception::addinfo() const {
- return info;
+ return info;
}
queryException::queryException(int qtype, const std::string &source) :
- exception(qtype), q(source) {}
+ exception(qtype), q(source) {}
queryException::~queryException() {
- //delete q; // ### see comment on bib1Exception destructor
+ //delete q; // ### see comment on bib1Exception destructor
}
std::string queryException::errmsg() const {
- switch (code) {
- case PREFIX: return "bad prefix search";
- case CCL: return "bad CCL search";
- default: break;
- }
- return "bad search (unknown type)";
+ switch (code) {
+ case PREFIX: return "bad prefix search";
+ case CCL: return "bad CCL search";
+ default: break;
+ }
+ return "bad search (unknown type)";
}
std::string queryException::addinfo() const {
- return q;
+ return q;
}
}
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+
-// $Header: /home/cvsroot/yaz++/zoom/zquery.cpp,v 1.6 2003-09-22 13:01:54 mike Exp $
+// $Header: /home/cvsroot/yaz++/zoom/zquery.cpp,v 1.7 2005-06-25 15:53:21 adam Exp $
// Z39.50 Query classes
query::query() : q(ZOOM_query_create()) {
}
query::~query() {
- ZOOM_query_destroy(q);
+ ZOOM_query_destroy(q);
}
prefixQuery::prefixQuery(const std::string &pqn) {
- if (ZOOM_query_prefix(q, pqn.c_str()) == -1) {
- throw queryException(queryException::PREFIX, pqn);
- }
+ if (ZOOM_query_prefix(q, pqn.c_str()) == -1) {
+ throw queryException(queryException::PREFIX, pqn);
+ }
}
// The binding specification says we have to have destructors for
CCLQuery::CCLQuery(const std::string &, void *) {
- throw "Oops. No CCL support in ZOOM-C yet. Sorry.";
+ throw "Oops. No CCL support in ZOOM-C yet. Sorry.";
}
CCLQuery::~CCLQuery() {
}
}
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+
-// $Header: /home/cvsroot/yaz++/zoom/zrec.cpp,v 1.7 2003-09-22 13:06:27 mike Exp $
+// $Header: /home/cvsroot/yaz++/zoom/zrec.cpp,v 1.8 2005-06-25 15:53:21 adam Exp $
// Z39.50 Record class
#include "zoom.h"
-#include <yaz/yaz-util.h> // for yaz_matchstr()
+#include <yaz/yaz-util.h> // for yaz_matchstr()
namespace ZOOM {
record::syntax::syntax (value rs): val(rs) {}
record::syntax::operator std::string() const {
- switch (val) {
- case GRS1: return "grs1";
- case SUTRS: return "sutrs";
- case USMARC: return "usmarc";
- case UKMARC: return "ukmarc";
- case XML: return "xml";
- default: break;
- }
- return "unknown";
+ switch (val) {
+ case GRS1: return "grs1";
+ case SUTRS: return "sutrs";
+ case USMARC: return "usmarc";
+ case UKMARC: return "ukmarc";
+ case XML: return "xml";
+ default: break;
+ }
+ return "unknown";
}
bool record::syntax::operator==(const record::syntax &s) const {
- return s.val == val;
+ return s.val == val;
}
bool record::syntax::operator==(record::syntax::value rs) const {
- return rs == val;
+ return rs == val;
}
record::syntax::operator record::syntax::value() const {
- return val;
+ return val;
}
record::record(resultSet &rs, size_t i): owner(rs) {
- if ((r = ZOOM_resultset_record(rs._getYazResultSet(), i)) == 0) {
- const char *errmsg; // unused: carries same info as `errcode'
- const char *addinfo;
- int errcode = ZOOM_connection_error(rs._getYazConnection(),
- &errmsg, &addinfo);
- throw bib1Exception(errcode, addinfo);
- }
-
- // Memory management is odd here. The ZOOM-C record we've
- // just fetched (`r') is owned by the ZOOM-C result-set we
- // fetched it from (`rs.rs'), so the underlying (ZOOM-C)
- // record is _not_ destroyed when this object is destroyed:
- // it's done when the underlying result-set is deleted.
+ if ((r = ZOOM_resultset_record(rs._getYazResultSet(), i)) == 0) {
+ const char *errmsg; // unused: carries same info as `errcode'
+ const char *addinfo;
+ int errcode = ZOOM_connection_error(rs._getYazConnection(),
+ &errmsg, &addinfo);
+ throw bib1Exception(errcode, addinfo);
+ }
+
+ // Memory management is odd here. The ZOOM-C record we've
+ // just fetched (`r') is owned by the ZOOM-C result-set we
+ // fetched it from (`rs.rs'), so the underlying (ZOOM-C)
+ // record is _not_ destroyed when this object is destroyed:
+ // it's done when the underlying result-set is deleted.
}
record::~record() {
- // Nothing to do -- see comment in constructor
+ // Nothing to do -- see comment in constructor
}
// It's tempting to modify this method just to return either the
// if we did that.
//
record::syntax record::recsyn() const {
- const char *syn = ZOOM_record_get(r, "syntax", 0);
-
- // These string constants are from yaz/util/oid.c
- if (!yaz_matchstr(syn, "xml"))
- return syntax::XML;
- else if (!yaz_matchstr(syn, "GRS-1"))
- return syntax::GRS1;
- else if (!yaz_matchstr(syn, "SUTRS"))
- return syntax::SUTRS;
- else if (!yaz_matchstr(syn, "USmarc"))
- return syntax::USMARC;
- else if (!yaz_matchstr(syn, "UKmarc"))
- return syntax::UKMARC;
- else if (!yaz_matchstr(syn, "XML") ||
- !yaz_matchstr(syn, "text-XML") ||
- !yaz_matchstr(syn, "application-XML"))
- return syntax::XML;
-
- return syntax::UNKNOWN;
+ const char *syn = ZOOM_record_get(r, "syntax", 0);
+
+ // These string constants are from yaz/util/oid.c
+ if (!yaz_matchstr(syn, "xml"))
+ return syntax::XML;
+ else if (!yaz_matchstr(syn, "GRS-1"))
+ return syntax::GRS1;
+ else if (!yaz_matchstr(syn, "SUTRS"))
+ return syntax::SUTRS;
+ else if (!yaz_matchstr(syn, "USmarc"))
+ return syntax::USMARC;
+ else if (!yaz_matchstr(syn, "UKmarc"))
+ return syntax::UKMARC;
+ else if (!yaz_matchstr(syn, "XML") ||
+ !yaz_matchstr(syn, "text-XML") ||
+ !yaz_matchstr(syn, "application-XML"))
+ return syntax::XML;
+
+ return syntax::UNKNOWN;
}
std::string record::render() const {
- int len;
- const char* data = ZOOM_record_get(r, "render", &len);
- return std::string(data, len);
+ int len;
+ const char* data = ZOOM_record_get(r, "render", &len);
+ return std::string(data, len);
}
std::string record::rawdata() const {
- int len;
- const char* data = ZOOM_record_get(r, "raw", &len);
- return std::string(data, len);
+ int len;
+ const char* data = ZOOM_record_get(r, "raw", &len);
+ return std::string(data, len);
}
}
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+
-// $Header: /home/cvsroot/yaz++/zoom/zrs.cpp,v 1.6 2003-09-22 13:04:52 mike Exp $
+// $Header: /home/cvsroot/yaz++/zoom/zrs.cpp,v 1.7 2005-06-25 15:53:21 adam Exp $
// Z39.50 Result Set class
namespace ZOOM {
resultSet::resultSet(connection &c, const query &q) : owner(c) {
- ZOOM_connection yazc = c._getYazConnection();
- rs = ZOOM_connection_search(yazc, q._getYazQuery());
- int errcode;
- const char *errmsg; // unused: carries same info as `errcode'
- const char *addinfo;
-
- if ((errcode = ZOOM_connection_error(yazc, &errmsg, &addinfo)) != 0) {
- ZOOM_resultset_destroy(rs);
- throw bib1Exception(errcode, addinfo);
- }
+ ZOOM_connection yazc = c._getYazConnection();
+ rs = ZOOM_connection_search(yazc, q._getYazQuery());
+ int errcode;
+ const char *errmsg; // unused: carries same info as `errcode'
+ const char *addinfo;
+
+ if ((errcode = ZOOM_connection_error(yazc, &errmsg, &addinfo)) != 0) {
+ ZOOM_resultset_destroy(rs);
+ throw bib1Exception(errcode, addinfo);
+ }
}
resultSet::~resultSet() {
- ZOOM_resultset_destroy(rs);
+ ZOOM_resultset_destroy(rs);
}
std::string resultSet::option(const std::string &key) const {
- return ZOOM_resultset_option_get(rs, key.c_str());
+ return ZOOM_resultset_option_get(rs, key.c_str());
}
bool resultSet::option(const std::string &key, const std::string &val) {
ZOOM_resultset_option_set(rs, key.c_str(), val.c_str());
- return true;
+ return true;
}
size_t resultSet::size() const {
- return ZOOM_resultset_size(rs);
+ return ZOOM_resultset_size(rs);
}
}
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+