Hello,

I have to make a leader election emulator on a tree. The whole project is based on this pseudocode:

Code:
var ws: boolean init false;
    wr: integer init 0;
    rec[q]: Boolean for each q ∈ Neigh init false;
    v: P init p;
    state: (sleep, leader, lost) init sleep;
begin if p is initiator then
    begin ws:=true;
        forall q ∈ Neigh do send <wakeup> to q
    end;
    while wr < #Neigh do
        begin receive <wakeup>;
            wr:=wr+1;
            if not ws then
                begin ws:=true;
                    forall q ∈ Neigh do send <wakeup> to q
                end
    end;

    /* Now start the tree algorithm */
    while #{q: &#172;rec[q]} >1 do
        begin receive <tok,r> from q;
            rec[q]:=true;
            v:=min(v,r)
        end;
    send <tok, v> to q0 with &#172;rec[q0];
    receive <tok,r> from q0;
    v:=min(v,r);
    if v=p then state:=leader else state:=lost;
    forall q ∈ Neigh, q≠q0 do send <tok,v> to q
end
Have anyone did something similar or can publish a similar C source code for leader election on trees?
I am totally lost... Don't know how to start except define variables....

Thanks a lot.