Remove the extensive logging
[yaz-moved-to-github.git] / src / zoom-event.c
1 /* This file is part of the YAZ toolkit.
2  * Copyright (C) 1995-2010 Index Data
3  * See the file LICENSE for details.
4  */
5 /**
6  * \file zoom-event.c
7  * \brief Implements ZOOM Event stuff
8  */
9
10 #include <assert.h>
11 #include <string.h>
12 #include <errno.h>
13 #include "zoom-p.h"
14
15 ZOOM_API(const char *) ZOOM_get_event_str(int event)
16 {
17     static const char *ar[] = {
18         "NONE",
19         "CONNECT",
20         "SEND_DATA",
21         "RECV_DATA",
22         "TIMEOUT",
23         "UNKNOWN",
24         "SEND_APDU",
25         "RECV_APDU",
26         "RECV_RECORD",
27         "RECV_SEARCH",
28         "END"
29     };
30     return ar[event];
31 }
32
33 struct ZOOM_Event_p {
34     int kind;
35     ZOOM_Event next;
36     ZOOM_Event prev;
37 };
38
39 ZOOM_Event ZOOM_Event_create(int kind)
40 {
41     ZOOM_Event event = (ZOOM_Event) xmalloc(sizeof(*event));
42     event->kind = kind;
43     event->next = 0;
44     event->prev = 0;
45     return event;
46 }
47
48
49 ZOOM_Event ZOOM_connection_get_event(ZOOM_connection c)
50 {
51     ZOOM_Event event = c->m_queue_front;
52     if (!event)
53     {
54         c->last_event = ZOOM_EVENT_NONE;
55         return 0;
56     }
57     assert(c->m_queue_back);
58     c->m_queue_front = event->prev;
59     if (c->m_queue_front)
60     {
61         assert(c->m_queue_back);
62         c->m_queue_front->next = 0;
63     }
64     else
65         c->m_queue_back = 0;
66     c->last_event = event->kind;
67     return event;
68 }
69
70 void ZOOM_connection_put_event(ZOOM_connection c, ZOOM_Event event)
71 {
72     if (c->m_queue_back)
73     {
74         c->m_queue_back->prev = event;
75         assert(c->m_queue_front);
76     }
77     else
78     {
79         assert(!c->m_queue_front);
80         c->m_queue_front = event;
81     }
82     event->next = c->m_queue_back;
83     event->prev = 0;
84     c->m_queue_back = event;
85 }
86
87 void ZOOM_Event_destroy(ZOOM_Event event)
88 {
89     xfree(event);
90 }
91
92 void ZOOM_connection_remove_events(ZOOM_connection c)
93 {
94     ZOOM_Event event;
95     while ((event = ZOOM_connection_get_event(c)))
96         ZOOM_Event_destroy(event);
97 }
98
99 ZOOM_API(int) ZOOM_connection_peek_event(ZOOM_connection c)
100 {
101     ZOOM_Event event = c->m_queue_front;
102
103     return event ? event->kind : ZOOM_EVENT_NONE;
104 }
105
106
107 /*
108  * Local variables:
109  * c-basic-offset: 4
110  * c-file-style: "Stroustrup"
111  * indent-tabs-mode: nil
112  * End:
113  * vim: shiftwidth=4 tabstop=8 expandtab
114  */
115