… | |
… | |
622 | ############################################################################# |
622 | ############################################################################# |
623 | # talk with/to global nodes |
623 | # talk with/to global nodes |
624 | |
624 | |
625 | # protocol messages: |
625 | # protocol messages: |
626 | # |
626 | # |
627 | # sent by all slave nodes (slave to master) |
627 | # sent by global nodes |
628 | # g_slave database - make other global node master of the sender |
628 | # g_global - node became global, similar to global=1 greeting |
629 | # |
629 | # |
630 | # sent by any node to global nodes |
630 | # database protocol |
631 | # g_set database - set whole database |
631 | # g_slave database - make other global node master of the sender |
|
|
632 | # g_set database - global node's database to other global nodes |
632 | # g_upd family set del - update single family |
633 | # g_upd family set del - update single family (all to global) |
633 | # g_del family key - delete key from database |
|
|
634 | # g_get family key reply... - send reply with data |
|
|
635 | # |
634 | # |
636 | # send by global nodes |
635 | # slave <-> global protocol |
637 | # g_global - node became global, similar to global=1 greeting |
636 | # g_find node - query addresses for node (slave to global) |
|
|
637 | # g_found node binds - node addresses (global to slave) |
|
|
638 | # g_db_family family id - send g_reply with data (global to slave) |
|
|
639 | # g_db_keys family id - send g_reply with data (global to slave) |
|
|
640 | # g_db_values family id - send g_reply with data (global to slave) |
|
|
641 | # g_reply id result - result of any query (global to slave) |
|
|
642 | # g_mon1 family - start to monitor family, replies with g_chg1 |
|
|
643 | # g_mon0 family - stop monitoring family |
|
|
644 | # g_chg1 family hash - initial value of family when starting to monitor |
|
|
645 | # g_chg2 family set del - like g_upd, but for monitoring only |
638 | # |
646 | # |
639 | # database families |
647 | # internal database families |
640 | # "'l" -> node -> listeners |
648 | # "'l" -> node -> listeners |
641 | # "'g" -> node -> undef |
649 | # "'g" -> node -> undef |
642 | # ... |
650 | # ... |
643 | # |
651 | # |
644 | |
652 | |
… | |
… | |
744 | } |
752 | } |
745 | }; |
753 | }; |
746 | }; |
754 | }; |
747 | } |
755 | } |
748 | |
756 | |
749 | # other node wants to make us the master |
757 | # other node wants to make us the master, so start the global service |
750 | $NODE_REQ{g_slave} = sub { |
758 | $NODE_REQ{g_slave} = sub { |
751 | my ($db) = @_; |
759 | my ($db) = @_; |
752 | |
760 | |
753 | # load global module and redo the request |
761 | # load global module and redo the request |
754 | require AnyEvent::MP::Global; |
762 | require AnyEvent::MP::Global; |