@@ -50,9 +50,14 @@ typedef void *SpringConfig;
5050typedef void * SpringPipeline ;
5151
5252/**
53- * Row object from an in memory queue.
53+ * Row object to pop from an in memory queue.
5454 */
55- typedef void * SpringRow ;
55+ typedef void * SpringSinkRow ;
56+
57+ /**
58+ * Row object to push into an in memory queue.
59+ */
60+ typedef void * SpringSourceRow ;
5661
5762/**
5863 * Returns default configuration.
@@ -146,7 +151,7 @@ enum SpringErrno spring_command(const SpringPipeline *pipeline, const char *sql)
146151 *
147152 * - `Unavailable`: queue named `queue` does not exist.
148153 */
149- SpringRow * spring_pop (const SpringPipeline * pipeline , const char * queue );
154+ SpringSinkRow * spring_pop (const SpringPipeline * pipeline , const char * queue );
150155
151156/**
152157 * Pop a row from an in memory queue. This is a non-blocking function.
@@ -160,19 +165,55 @@ SpringRow *spring_pop(const SpringPipeline *pipeline, const char *queue);
160165 *
161166 * - `Unavailable`: queue named `queue` does not exist.
162167 */
163- SpringRow * spring_pop_non_blocking (const SpringPipeline * pipeline ,
164- const char * queue ,
165- bool * is_err );
168+ SpringSinkRow * spring_pop_non_blocking (const SpringPipeline * pipeline ,
169+ const char * queue ,
170+ bool * is_err );
171+
172+ /**
173+ * Push a row into an in memory queue. This is a non-blocking function.
174+ *
175+ * # Returns
176+ *
177+ * - `Ok`: on success.
178+ * - `Unavailable`: queue named `queue` does not exist.
179+ */
180+ enum SpringErrno spring_push (const SpringPipeline * pipeline ,
181+ const char * queue ,
182+ const SpringSourceRow * row );
183+
184+ /**
185+ * Create a source row from JSON string
186+ *
187+ * # Returns
188+ *
189+ * - non-NULL: Successfully created a row.
190+ * - NULL: Error occurred.
191+ *
192+ * # Errors
193+ *
194+ * - `InvalidFormat`: JSON string is invalid.
195+ */
196+ SpringSourceRow * spring_source_row_from_json (const char * json );
197+
198+ /**
199+ * Frees heap occupied by a `SpringSourceRow`.
200+ *
201+ * # Returns
202+ *
203+ * - `Ok`: on success.
204+ * - `CNull`: `pipeline` is a NULL pointer.
205+ */
206+ enum SpringErrno spring_source_row_close (SpringSourceRow * row );
166207
167208/**
168- * Frees heap occupied by a `SpringRow `.
209+ * Frees heap occupied by a `SpringSinkRow `.
169210 *
170211 * # Returns
171212 *
172213 * - `Ok`: on success.
173214 * - `CNull`: `pipeline` is a NULL pointer.
174215 */
175- enum SpringErrno spring_row_close ( SpringRow * row );
216+ enum SpringErrno spring_sink_row_close ( SpringSinkRow * row );
176217
177218/**
178219 * Get a 2-byte integer column.
@@ -191,7 +232,7 @@ enum SpringErrno spring_row_close(SpringRow *row);
191232 * - `i_col` is out of range.
192233 * - `CNull`: Column value is NULL.
193234 */
194- enum SpringErrno spring_column_short (const SpringRow * row , uint16_t i_col , short * out );
235+ enum SpringErrno spring_column_short (const SpringSinkRow * row , uint16_t i_col , short * out );
195236
196237/**
197238 * Get a 4-byte integer column.
@@ -210,7 +251,7 @@ enum SpringErrno spring_column_short(const SpringRow *row, uint16_t i_col, short
210251 * - `i_col` is out of range.
211252 * - `CNull`: Column value is NULL.
212253 */
213- enum SpringErrno spring_column_int (const SpringRow * row , uint16_t i_col , int * out );
254+ enum SpringErrno spring_column_int (const SpringSinkRow * row , uint16_t i_col , int * out );
214255
215256/**
216257 * Get an 8-byte integer column.
@@ -229,7 +270,7 @@ enum SpringErrno spring_column_int(const SpringRow *row, uint16_t i_col, int *ou
229270 * - `i_col` is out of range.
230271 * - `CNull`: Column value is NULL.
231272 */
232- enum SpringErrno spring_column_long (const SpringRow * row , uint16_t i_col , long * out );
273+ enum SpringErrno spring_column_long (const SpringSinkRow * row , uint16_t i_col , long * out );
233274
234275/**
235276 * Get a 4-byte unsigned integer column.
@@ -248,7 +289,7 @@ enum SpringErrno spring_column_long(const SpringRow *row, uint16_t i_col, long *
248289 * - `i_col` is out of range.
249290 * - `CNull`: Column value is NULL.
250291 */
251- enum SpringErrno spring_column_unsigned_int (const SpringRow * row ,
292+ enum SpringErrno spring_column_unsigned_int (const SpringSinkRow * row ,
252293 uint16_t i_col ,
253294 unsigned int * out );
254295
@@ -270,7 +311,7 @@ enum SpringErrno spring_column_unsigned_int(const SpringRow *row,
270311 * - `i_col` is out of range.
271312 * - `CNull`: Column value is NULL.
272313 */
273- int spring_column_text (const SpringRow * row , uint16_t i_col , char * out , int out_len );
314+ int spring_column_text (const SpringSinkRow * row , uint16_t i_col , char * out , int out_len );
274315
275316/**
276317 * Get a BLOB column.
@@ -290,7 +331,7 @@ int spring_column_text(const SpringRow *row, uint16_t i_col, char *out, int out_
290331 * - `i_col` is out of range.
291332 * - `CNull`: Column value is NULL.
292333 */
293- int spring_column_blob (const SpringRow * row , uint16_t i_col , void * out , int out_len );
334+ int spring_column_blob (const SpringSinkRow * row , uint16_t i_col , void * out , int out_len );
294335
295336/**
296337 * Get a bool column.
@@ -309,7 +350,7 @@ int spring_column_blob(const SpringRow *row, uint16_t i_col, void *out, int out_
309350 * - `i_col` is out of range.
310351 * - `CNull`: Column value is NULL.
311352 */
312- enum SpringErrno spring_column_bool (const SpringRow * row , uint16_t i_col , bool * out );
353+ enum SpringErrno spring_column_bool (const SpringSinkRow * row , uint16_t i_col , bool * out );
313354
314355/**
315356 * Get a 4-byte floating point column.
@@ -328,7 +369,7 @@ enum SpringErrno spring_column_bool(const SpringRow *row, uint16_t i_col, bool *
328369 * - `i_col` is out of range.
329370 * - `CNull`: Column value is NULL.
330371 */
331- enum SpringErrno spring_column_float (const SpringRow * row , uint16_t i_col , float * out );
372+ enum SpringErrno spring_column_float (const SpringSinkRow * row , uint16_t i_col , float * out );
332373
333374/**
334375 * Write the most recent error number into `errno` and message into a caller-provided buffer as a UTF-8
0 commit comments