-static Z3950_record record_cache_lookup (Z3950_resultset r,
- int pos,
- const char *elementSetName);
+static Z3950_Event Z3950_Event_create (int kind)
+{
+ Z3950_Event event = xmalloc (sizeof(*event));
+ event->kind = kind;
+ event->next = 0;
+ event->prev = 0;
+ return event;
+}
+
+static void Z3950_Event_destroy (Z3950_Event event)
+{
+ xfree (event);
+}
+
+static void Z3950_connection_put_event (Z3950_connection c, Z3950_Event event)
+{
+ // put in back of queue
+ if (c->m_queue_back)
+ {
+ c->m_queue_back->prev = event;
+ assert (c->m_queue_front);
+ }
+ else
+ {
+ assert (!c->m_queue_front);
+ c->m_queue_front = event;
+ }
+ event->next = c->m_queue_back;
+ event->prev = 0;
+ c->m_queue_back = event;
+}
+
+static Z3950_Event Z3950_connection_get_event(Z3950_connection c)
+{
+ // get from front of queue
+ Z3950_Event event = c->m_queue_front;
+ if (!event)
+ return 0;
+ assert (c->m_queue_back);
+ c->m_queue_front = event->prev;
+ if (c->m_queue_front)
+ {
+ assert (c->m_queue_back);
+ c->m_queue_front->next = 0;
+ }
+ else
+ c->m_queue_back = 0;
+ return event;
+}