Changeset 640:237cf6339546 in freeDiameter for extensions/dbg_interactive/queues.i
- Timestamp:
- Dec 20, 2010, 7:36:40 PM (13 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
extensions/dbg_interactive/queues.i
r638 r640 77 77 78 78 /* Post an item */ 79 void post(PyObject * item) { 80 int ret; 81 PyObject * i = item; 82 83 Py_XINCREF(i); 84 ret = fd_fifo_post($self, &i); 79 void post(PyObject * item, char * type = NULL) { 80 int ret; 81 if (type) { 82 void * real_obj = NULL; 83 swig_type_info * desttype = NULL; 84 desttype = SWIG_TypeQuery(type); 85 if (!desttype) { 86 DI_ERROR(EINVAL, NULL, "Unable to resolve this type. Please check the form: 'struct blahbla *'"); 87 return; 88 } 89 /* Now, get the "real" value under the shadow umbrella */ 90 ret = SWIG_ConvertPtr(item, &real_obj, desttype, SWIG_POINTER_DISOWN ); 91 if (!SWIG_IsOK(ret)) { 92 DI_ERROR(EINVAL, SWIG_ErrorType(ret), "Unable to convert the item to given type"); 93 return; 94 } 95 ret = fd_fifo_post($self, &real_obj); 96 } else { 97 PyObject * i = item; 98 Py_XINCREF(i); 99 ret = fd_fifo_post($self, &i); 100 } 85 101 if (ret != 0) { 86 102 DI_ERROR(ret, NULL, NULL); … … 89 105 90 106 /* Get (blocking) */ 91 PyObject * get( ) {107 PyObject * get(char * type = NULL) { 92 108 int ret; 93 109 PyObject * i = NULL; 94 95 ret = fd_fifo_get($self, &i); 96 if (ret != 0) { 97 DI_ERROR(ret, NULL, NULL); 98 } 99 100 return i; 110 void * obj = NULL; 111 swig_type_info * desttype = NULL; 112 if (type) { 113 desttype = SWIG_TypeQuery(type); 114 if (!desttype) { 115 DI_ERROR(EINVAL, NULL, "Unable to resolve this type. Please check the form: 'struct blahbla *'"); 116 return NULL; 117 } 118 } 119 120 ret = fd_fifo_get($self, &obj); 121 if (ret != 0) { 122 DI_ERROR(ret, NULL, NULL); 123 } 124 125 if (type) { 126 return SWIG_NewPointerObj(obj, desttype, 0 ); 127 } else { 128 i = obj; 129 return i; 130 } 101 131 } 102 132 103 133 /* TryGet (non-blocking, returns None on empty queue) */ 104 PyObject * tryget( ) {134 PyObject * tryget(char * type = NULL) { 105 135 int ret; 106 136 PyObject * i = NULL; 107 108 ret = fd_fifo_tryget($self, &i); 137 void * obj = NULL; 138 swig_type_info * desttype = NULL; 139 if (type) { 140 desttype = SWIG_TypeQuery(type); 141 if (!desttype) { 142 DI_ERROR(EINVAL, NULL, "Unable to resolve this type. Please check the form: 'struct blahbla *'"); 143 return NULL; 144 } 145 } 146 147 ret = fd_fifo_tryget($self, &obj); 109 148 if (ret == EWOULDBLOCK) { 110 149 Py_XINCREF(Py_None); … … 115 154 } 116 155 117 return i; 156 if (type) { 157 return SWIG_NewPointerObj(obj, desttype, 0 ); 158 } else { 159 i = obj; 160 return i; 161 } 118 162 } 119 163 120 164 /* TimedGet (blocking for a while) */ 121 PyObject * timedget(long seconds ) {165 PyObject * timedget(long seconds, char * type = NULL) { 122 166 int ret; 123 167 PyObject * i = NULL; 124 168 struct timespec ts; 169 void * obj = NULL; 170 swig_type_info * desttype = NULL; 171 if (type) { 172 desttype = SWIG_TypeQuery(type); 173 if (!desttype) { 174 DI_ERROR(EINVAL, NULL, "Unable to resolve this type. Please check the form: 'struct blahbla *'"); 175 return NULL; 176 } 177 } 125 178 126 179 clock_gettime(CLOCK_REALTIME, &ts); 127 180 ts.tv_sec += seconds; 128 181 129 ret = fd_fifo_timedget($self, & i, &ts);182 ret = fd_fifo_timedget($self, &obj, &ts); 130 183 if (ret == ETIMEDOUT) { 131 184 Py_XINCREF(Py_None); … … 136 189 } 137 190 138 return i; 191 if (type) { 192 return SWIG_NewPointerObj(obj, desttype, 0 ); 193 } else { 194 i = obj; 195 return i; 196 } 139 197 } 140 198
Note: See TracChangeset
for help on using the changeset viewer.