software architecture/design question




For starters, I've done my homework and believe this is the right
group. That said apologies in advance if I'm not.
Now consider a system comprised of 7 COTS boards. For simplicity
assume each board had 1 processor - a power PC - but that's irrelevant.
Lets call each processor A, B, C, D, E, F and G.

Processor A serves as the 'master' and is required during initilization
to transmit via ethernet a 'configure' message to processor G. This
'configure' message is a composite type. So now lets assume the
command/response from a to g and g to a is as follows:

struct command_a_to_g { bool configure; };
struct response_g_to_a { bool configure; };

Unpon receipt of a statisfactory ( assume true) response from G. A
will now ask processors C, D and E to configure. Once again upon
receipt of a satisfactory response from C, D and E, A will now ask the
- last processor - B to configure.

By 'configure', each card essentially set's up a so called -
destination channel. Details aside they each allocate a bucket of
memory and each card could see each others memory ( a PCI translation )
that's been allocated.

The important thing though surrounds the fact that their is a
_specific_ order with with each processor needs to set up this so
called 'destination channel'. The master (A) is in control of all
this.
At issue.

I'm not sure how to architect this. In essence setup my composite
type. Here's the brute force approach:

struct command_a_to_g { bool configure; };
struct response_g_to_a { bool configure; };

struct command_a_to_c { bool configure; };
struct response_c_to_a { bool configure; };

struct command_a_to_d { bool configure; };
struct response_d_to_a { bool configure; };

struct command_a_to_e { bool configure; };
struct response_e_to_a { bool configure; };

struct command_a_to_b { bool configure; };
struct response_b_to_a { bool configure; };

A composite type for each command/response. Trouble is that seem
downright _ugly_. So I'm thinking why not one composite type that'll
get passed to every one. They'll check for select 'things' in the type
and a return a 'select' response.
Software architecture/design and I wrestle from time to time so any
help appreaciated.

Thanks

.