Talk:Nodal-wikid.pl
|
From old talk:session.pl
- A session-handler subroutine is spawned as an independent child by server.pl in response to a connection from an instance of peer.swf. This ensures that each interface has a dedicated peer-process which is necessary for real-time event propagtion. The handle is then passed to nodal-wikid.pl (the running peerd thread) which maintains a connection with all the locally spawned session-handlers so that the interfaces can exchange change-information with the network.
- The current session-handler setup
This script will now be used to talk to the session-handlers instead of server.pl. Its server.pl that receives the initial connection request because its the one listening on the socket, but now it will pass its session-handler-handle to nodal-wikid.pl and remove it from its own IO::Select list.
sessionHandler() is listed under nodal-wikid.pl in the script-tree even though its actually spawned by server.pl, because server.pl passes the handle on to the peerd() instance and takes no further interest in it (removes it from its IO::Select list).
How does it do this? server.pl has a handle to nodal-wikid.pl (the $::peerdHandle) because it connects back to its parent when it spawns. When server.pl spawns a session-handler it passes both the newly connecting peer.swf handle and the global $::peerdHandle handle as spawn-parameters. --Nad 10:04, 17 Apr 2006 (NZST)
- Note that from the perspective of the peerd thread, all incoming information appears to come from server.pl, because the session-handler threads connect using the $::peerdHandle which was created by peerd's initial connection to server.pl. This means that peerd must determine which of the streams is really the parent and then can treat all others as session-handlers. --Nad 15:45, 18 Apr 2006 (NZST)
- This may not be quite the right way of doing it, because it means all the session-handlers are sharing the one stream... --Nad 15:53, 18 Apr 2006 (NZST)
The way it's done now, but still being debugged
- New interface connection
- A peer.swf sends a connect message to peer:port
- server.pl receives the message and asks peerd to connect back on a new stream. The new peer.swf stream-identity is also passed in the message to peerd.
- peerd receives the message and responds by establishing a new connection back to server.pl passing the peer.swf stream-identity back again.
- server.pl receives this message back from peerd and spawns a new session-handler passing both the peer.swf handle and the handle of the new peerd stream.
- The session-handler sends an introduction to the peer.swf
- Change notification from an XmlWiki
- A page in the wiki is saved and the notify-peer.php transform executes
- notify-peer.php sends a change command to peer:port
- server.pl receives the messages and forwards it to the peerd thread
- peerd updates the nodal structure and propagates changes to each session-handler
- the session-handlers forward the nodal changes to their respective peer.swf's
- Change notification from a peer.swf
- The stream between the peer.swf and its session-handler thread are already established
- The peer.swf's session-handler receives the incoming data
- The session-handler may respond directly to the peer.swf, or
- Propagates changes up to the peerd.
- Nodes and GUID's
The process of organising node's GUIDs is not yet automatic, and so we need to deal directly with them instead of having them hidden behind the scenes like an inode-number.
Currently the nodes have just been assigned successive integers starting from zero as the various nodal concepts have arrisen. For this reason the location of the most up-to-date list of nodes is in the currently developing nodal script - in this case nodal-wikid.pl.
- --Nad 22:31, 15 Feb 2006 (NZST)
+peer dev links |
Example peer log including change-propagation bug
- First interface connects to server
Thu May 11 23:47:36 2006 : [server/stream3] New connection: Stream5 Thu May 11 23:47:36 2006 : [server/stream5] PEER command "connect" received from an instance of "interface" Thu May 11 23:47:36 2006 : [peerd] Message from server.pl: "connect-request/stream5"
- Peerd connects back to server on new stream
Thu May 11 23:47:36 2006 : [server/stream3] New connection: Stream6 Thu May 11 23:47:36 2006 : [server/stream6] PEER command "session" received from an instance of "peerd/stream5" Thu May 11 23:47:36 2006 : [server/stream6] Spawned child (10787) for "sessionHandler" Thu May 11 23:47:36 2006 : [sessionHandler/10787] Session-handler( stream6, stream5, stream5 )
- Server receives a change-event from wiki (forwards to interface successfully)
Thu May 11 23:47:50 2006 : [server/stream3] New connection: Stream5 Thu May 11 23:47:53 2006 : [server/stream5] PEER command "change" received from an instance of "notify-peer.php" Thu May 11 23:47:53 2006 : [server/stream5] Stream5 disconnected. Thu May 11 23:47:53 2006 : [peerd] Message from server.pl: "change/notify-peer.php" Thu May 11 23:47:53 2006 : [sessionHandler/10787] Msg received on stream6: "change/notify-peer.php"
- A second interface connects to server
Thu May 11 23:48:11 2006 : [server/stream3] New connection: Stream5 Thu May 11 23:48:11 2006 : [server/stream5] PEER command "connect" received from an instance of "interface" Thu May 11 23:48:11 2006 : [peerd] Message from server.pl: "connect-request/stream5"
- Peerd connects back with a new stream and a second session-handler is spawned
Thu May 11 23:48:11 2006 : [server/stream3] New connection: Stream7 Thu May 11 23:48:11 2006 : [server/stream7] PEER command "session" received from an instance of "peerd/stream5" Thu May 11 23:48:11 2006 : [sessionHandler/8327] Session-handler( stream7, stream5, stream5 ) Thu May 11 23:48:11 2006 : [server/stream7] Spawned child (8327) for "sessionHandler"
- Server receives a second change-event from wiki (but it does NOT forward to either of the two interfaces)
Thu May 11 23:48:28 2006 : [server/stream3] New connection: Stream5 Thu May 11 23:48:28 2006 : [server/stream5] PEER command "change" received from an instance of "notify-peer.php" Thu May 11 23:48:28 2006 : [server/stream5] Stream5 disconnected. Thu May 11 23:48:28 2006 : [peerd] Message from server.pl: "change/notify-peer.php"
- The interfaces are closed
Thu May 11 23:48:38 2006 : [sessionHandler/8327] Handles closed, Exit. Thu May 11 23:48:40 2006 : [sessionHandler/10787] Handles closed, Exit.