getting closer with the distribution infrastructure
git-svn-id: svn://anubis/fart/trunk@230 7f9b0f55-74a9-4bce-be96-3c2cd072584d
This commit is contained in:
parent
c9c3c942fb
commit
af4e4d571e
@ -115,6 +115,7 @@ void connection_thread(distrib::connection_thread_arg_t * arg)
|
|||||||
int client_socket = arg->client_socket;
|
int client_socket = arg->client_socket;
|
||||||
delete arg;
|
delete arg;
|
||||||
|
|
||||||
|
bool done = false;
|
||||||
/* loop listening for messages from the client */
|
/* loop listening for messages from the client */
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
@ -122,7 +123,30 @@ void connection_thread(distrib::connection_thread_arg_t * arg)
|
|||||||
int nread = read(client_socket, &msg_type, sizeof(msg_type));
|
int nread = read(client_socket, &msg_type, sizeof(msg_type));
|
||||||
if (nread < 0)
|
if (nread < 0)
|
||||||
break;
|
break;
|
||||||
cout << "Read message type " << msg_type << "!" << endl;
|
switch (msg_type)
|
||||||
|
{
|
||||||
|
case MSG_WANT_DATA:
|
||||||
|
{
|
||||||
|
int task = the_distrib->getTask();
|
||||||
|
if (write(client_socket, &task, sizeof(task)) < 0)
|
||||||
|
done = true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case MSG_SEND_DATA:
|
||||||
|
{
|
||||||
|
unsigned char data[3 * UNIT_TASK_SIZE];
|
||||||
|
int task;
|
||||||
|
if (read(client_socket, &task, sizeof(task)) < 0)
|
||||||
|
done = true;
|
||||||
|
else if (read(client_socket, &data[0], sizeof(data)) < 0)
|
||||||
|
done = true;
|
||||||
|
else
|
||||||
|
the_distrib->send_data(task, &data[0], sizeof(data));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
close(client_socket);
|
close(client_socket);
|
||||||
}
|
}
|
||||||
@ -269,6 +293,7 @@ int distrib::send_data(int task, unsigned char * data, int num_bytes)
|
|||||||
{
|
{
|
||||||
int msg_header = MSG_SEND_DATA; /* send data */
|
int msg_header = MSG_SEND_DATA; /* send data */
|
||||||
if ( write(m_client_socket, &msg_header, sizeof(msg_header)) < 0
|
if ( write(m_client_socket, &msg_header, sizeof(msg_header)) < 0
|
||||||
|
|| write(m_client_socket, &task, sizeof(task)) < 0
|
||||||
|| write(m_client_socket, data, num_bytes) < 0)
|
|| write(m_client_socket, data, num_bytes) < 0)
|
||||||
{
|
{
|
||||||
return -1;
|
return -1;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user