|
@@ -1,27 +1,56 @@
|
|
|
#include <stdio.h>
|
|
|
+#include <stdlib.h>
|
|
|
+
|
|
|
#include "queue.h"
|
|
|
+#include "worker.h"
|
|
|
+
|
|
|
+void sum(int argc, char **values, char *buf_return)
|
|
|
+{
|
|
|
+
|
|
|
+ if (argc != 2) {
|
|
|
+ buf_return[0] = 0;
|
|
|
+ return;
|
|
|
+ } else {
|
|
|
+ long int a = strtol(values[0], NULL, 10);
|
|
|
+ long int b = strtol(values[1], NULL, 10);
|
|
|
+ long int sum = a + b;
|
|
|
+ sprintf(buf_return, "%d", sum);
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
int main(int argc, char **argv)
|
|
|
{
|
|
|
+ worker *w, *x;
|
|
|
+
|
|
|
|
|
|
queue *q;
|
|
|
- int i = -1;
|
|
|
|
|
|
q = initialize_queue();
|
|
|
+ char *buf1, *buf2;
|
|
|
|
|
|
- enqueue(q, 3);
|
|
|
- enqueue(q, 4);
|
|
|
- enqueue(q, 5);
|
|
|
+ char **params1 = malloc(sizeof(char *) * 2);
|
|
|
+ params1[0] = "1";
|
|
|
+ params1[1] = "2";
|
|
|
|
|
|
- i = dequeue(q);
|
|
|
- printf("\nvalue: %d", i);
|
|
|
+ w = new_worker(sum, 2, params1, 10, buf1);
|
|
|
+ enqueue(q, w);
|
|
|
|
|
|
- i = dequeue(q);
|
|
|
- printf("\nvalue: %d", i);
|
|
|
+ char **params2 = malloc(sizeof(char *) * 2);
|
|
|
+ params2[0] = "3";
|
|
|
+ params2[1] = "4";
|
|
|
|
|
|
- i = dequeue(q);
|
|
|
- printf("\nvalue: %d", i);
|
|
|
+ w = new_worker(sum, 2, params2, 10, buf2);
|
|
|
+ enqueue(q, w);
|
|
|
|
|
|
- return (0);
|
|
|
+ x = dequeue(q);
|
|
|
+ execute(x);
|
|
|
+
|
|
|
+ printf("\nValue 1: %s", x->buf_return);
|
|
|
+
|
|
|
+ x = dequeue(q);
|
|
|
+ execute(x);
|
|
|
+ printf("\nValue 2: %s", x->buf_return);
|
|
|
|
|
|
+
|
|
|
+ return (0);
|
|
|
}
|