<p>pespin has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ggsn/+/14557">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">gtp: queue.c: Document queue APIs<br><br>Change-Id: I8523a0d0508d7fb870a4a9119aa8eb4c3a4d6f17<br>---<br>M gtp/queue.c<br>1 file changed, 45 insertions(+), 8 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-ggsn refs/changes/57/14557/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/gtp/queue.c b/gtp/queue.c</span><br><span>index 305a33c..1db6536 100644</span><br><span>--- a/gtp/queue.c</span><br><span>+++ b/gtp/queue.c</span><br><span>@@ -121,7 +121,10 @@</span><br><span>  return EOF;             /* End of linked list and not found */</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/*! \brief Allocates and initialises new queue structure */</span><br><span style="color: hsl(120, 100%, 40%);">+/*! Allocates and initialises new queue structure</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[out] queue pointer where to store the allocated object. Must be freed with queue_free</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \returns zero on success, non-zero on error</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span> int queue_new(struct queue_t **queue)</span><br><span> {</span><br><span>  if (QUEUE_DEBUG)</span><br><span>@@ -138,7 +141,10 @@</span><br><span>      return 0;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/*! \brief Deallocates queue structure */</span><br><span style="color: hsl(120, 100%, 40%);">+/*! Deallocates queue structure</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] queue pointer previously allocated by queue_new</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \returns zero on success, non-zero on error.</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span> int queue_free(struct queue_t *queue)</span><br><span> {</span><br><span>    if (QUEUE_DEBUG)</span><br><span>@@ -149,7 +155,13 @@</span><br><span>      return 0;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/*! \brief Add a new message to the queue */</span><br><span style="color: hsl(120, 100%, 40%);">+/*! Add a new message to the queue</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] queue pointer previously allocated by queue_new</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[out] qmsg first message from the queue (if succeeds)</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] peer who sent the message to add</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] seq sequence number of the message to add</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \returns zero on success, non-zero on error.</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span> int queue_newmsg(struct queue_t *queue, struct qmsg_t **qmsg,</span><br><span>                struct sockaddr_in *peer, uint16_t seq)</span><br><span> {</span><br><span>@@ -176,7 +188,11 @@</span><br><span>         }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/*! \brief Simply remoev a given qmsg_t from the queue</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/*! Remove an element from the queue</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] queue pointer previously allocated by queue_new</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] qmsg message to free</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \returns zero on success, non-zero on error.</span><br><span>  *</span><br><span>  * Internally, we first delete the entry from the queue, and then update</span><br><span>  * up our global queue->first / queue->last pointers.  Finally,</span><br><span>@@ -210,7 +226,11 @@</span><br><span>    return 0;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/*! \brief Move a given qmsg_t to the end of the queue ?!? */</span><br><span style="color: hsl(120, 100%, 40%);">+/*! Move a given qmsg_t to the end of the queue</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] queue pointer previously allocated by queue_new</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] qmsg message to move to the end of the queue</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \returns zero on success, non-zero on error.</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span> int queue_back(struct queue_t *queue, struct qmsg_t *qmsg)</span><br><span> {</span><br><span>      if (QUEUE_DEBUG)</span><br><span>@@ -236,7 +256,11 @@</span><br><span>      return 0;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/*! \brief Get the first element in the entire queue */</span><br><span style="color: hsl(120, 100%, 40%);">+/*! Get the first element in the entire queue</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] queue pointer previously allocated by queue_new</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[out] qmsg first message from the queue (if succeeds)</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \returns zero on success, non-zero on error.</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span> int queue_getfirst(struct queue_t *queue, struct qmsg_t **qmsg)</span><br><span> {</span><br><span>     /*printf("queue_getfirst\n"); */</span><br><span>@@ -250,7 +274,13 @@</span><br><span>    return 0;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/*! \brief Get a queue entry for a given peer + seq */</span><br><span style="color: hsl(120, 100%, 40%);">+/*! Get a queue entry for a given peer + seq</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] queue pointer previously allocated by queue_new</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[out] qmsg first message from the queue (if succeeds)</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] peer who sent the message to retrieve</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] seq sequence number of the message to retrive</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \returns zero on success, non-zero on error.</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span> int queue_seqget(struct queue_t *queue, struct qmsg_t **qmsg,</span><br><span>           struct sockaddr_in *peer, uint16_t seq)</span><br><span> {</span><br><span>@@ -272,7 +302,14 @@</span><br><span>         return EOF;             /* End of linked list and not found */</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/*! \brief look-up a given seq/peer, return cbp + type and free entry */</span><br><span style="color: hsl(120, 100%, 40%);">+/*! look-up a given seq/peer, return cbp + type and free entry</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] queue pointer previously allocated by queue_new</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] peer who sent the message to retrieve</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] seq sequence number of the message to retrive</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[out] type GTP message type</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[out] type callback pointer of the message</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \returns zero on success, non-zero on error.</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span> int queue_freemsg_seq(struct queue_t *queue, struct sockaddr_in *peer,</span><br><span>                  uint16_t seq, uint8_t * type, void **cbp)</span><br><span> {</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ggsn/+/14557">change 14557</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-ggsn/+/14557"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-ggsn </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I8523a0d0508d7fb870a4a9119aa8eb4c3a4d6f17 </div>
<div style="display:none"> Gerrit-Change-Number: 14557 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>