More.
--- a/client.c Wed Mar 21 23:37:25 2007 +0100
+++ b/client.c Wed Mar 21 23:49:36 2007 +0100
@@ -30,6 +30,7 @@
if (res == 0)
break;
assert(res == sizeof(m));
+ msgdump(&m);
if (m.type == NEWJOB_OK)
;
}
--- a/msg.h Wed Mar 21 23:37:25 2007 +0100
+++ b/msg.h Wed Mar 21 23:49:36 2007 +0100
@@ -3,6 +3,7 @@
enum
{
CMD_LEN=500
+ LINE_LEN=500
};
enum msg_types
@@ -13,6 +14,7 @@
RUNJOB,
ENDJOB,
LIST,
+ LIST_LINE,
};
struct msg
@@ -24,6 +26,7 @@
char command[CMD_LEN];
int jobid;
int errorlevel;
+ char command[LINE_LEN];
} u;
};
--- a/msgdump.c Wed Mar 21 23:37:25 2007 +0100
+++ b/msgdump.c Wed Mar 21 23:49:36 2007 +0100
@@ -16,7 +16,7 @@
break;
case NEWJOB_OK:
printf(" NEWJOB_OK\n");
- printf(" JobID: '%s'\n", m->u.jobid);
+ printf(" JobID: '%i'\n", m->u.jobid);
break;
case RUNJOB:
printf(" RUNJOB\n");
--- a/server.c Wed Mar 21 23:37:25 2007 +0100
+++ b/server.c Wed Mar 21 23:49:36 2007 +0100
@@ -28,6 +28,7 @@
static enum Break
client_read(int index);
static void end_server(int ls);
+static s_newjob_ok(int index);
struct Client_conn
{
@@ -89,7 +90,6 @@
if (client_cs[i].socket > maxfd)
maxfd = client_cs[i].socket;
}
- printf("select of %i\n", nconnections);
select(maxfd + 1, &readset, NULL, NULL, NULL);
if (FD_ISSET(ls,&readset))
{
@@ -167,6 +167,7 @@
{
client_cs[index].jobid = s_newjob(&m);
client_cs[index].hasjob = 1;
+ s_newjob_ok(index);
}
if (m.type == LIST)
@@ -174,3 +175,21 @@
return NOBREAK; /* normal */
}
+
+static s_newjob_ok(int index)
+{
+ int s;
+ struct msg m;
+ int res;
+
+ assert(client_cs[index].hasjob);
+
+ s = client_cs[index].socket;
+
+ m.type = NEWJOB_OK;
+ m.u.jobid = client_cs[index].jobid;
+
+ res = write(s, &m, sizeof(m));
+ if(res == -1)
+ perror("write");
+}