<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to Developer Guide</title><link>https://sourceforge.net/p/molstream/wiki/Developer%2520Guide/</link><description>Recent changes to Developer Guide</description><atom:link href="https://sourceforge.net/p/molstream/wiki/Developer%20Guide/feed" rel="self"/><language>en</language><lastBuildDate>Tue, 26 May 2015 11:23:36 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/molstream/wiki/Developer%20Guide/feed" rel="self" type="application/rss+xml"/><item><title>Developer Guide modified by Alex Libov</title><link>https://sourceforge.net/p/molstream/wiki/Developer%2520Guide/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Alex Libov</dc:creator><pubDate>Tue, 26 May 2015 11:23:36 -0000</pubDate><guid>https://sourceforge.net7e9558227db6a2886d59826bbbe9f399d66d51f3</guid></item><item><title>Developer Guide modified by Alex Libov</title><link>https://sourceforge.net/p/molstream/wiki/Developer%2520Guide/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v2
+++ v3
@@ -30,7 +30,8 @@

 ###### public void nextCycle();

-This method is called once every cycle. Cycle length is a system parameter.
+This method is called once every cycle. Cycle length is a parameter.
+

 #### Module Types

@@ -46,10 +47,9 @@

 * OverlayTreeAlgorithm - adds getParent and getChildren methods.
 * GroupedOverlayAlgorithm - splits neighbors into multiple groups that can be retrieved using the getGroup method.
-    + MultipleTreeOverlayAlgorithm - inherits from GroupedOverlayAlgorithm and defines an additional map from a specific descriptor or modulation of the stream (basically an integer) to a subgroup of the child nodes.

 ###### Streaming Algorithm

 The Streaming Algorithm implements the actual chunk dissemination protocol.
-The Streaming Algorithm also initializes the VideoStream by calling P2PClient.initVS().
+The Streaming Algorithm also initializes the VideoStream by calling P2PClient.initVS.

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Alex Libov</dc:creator><pubDate>Tue, 26 May 2015 11:23:30 -0000</pubDate><guid>https://sourceforge.net4afdf28e2945dd0c2264dc8afcd60d5201ae1892</guid></item><item><title>Developer Guide modified by Alex Libov</title><link>https://sourceforge.net/p/molstream/wiki/Developer%2520Guide/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v1
+++ v2
@@ -30,8 +30,7 @@

 ###### public void nextCycle();

-This method is called once every cycle. Cycle length is a parameter.
-
+This method is called once every cycle. Cycle length is a system parameter.

 #### Module Types

@@ -47,9 +46,10 @@

 * OverlayTreeAlgorithm - adds getParent and getChildren methods.
 * GroupedOverlayAlgorithm - splits neighbors into multiple groups that can be retrieved using the getGroup method.
+    + MultipleTreeOverlayAlgorithm - inherits from GroupedOverlayAlgorithm and defines an additional map from a specific descriptor or modulation of the stream (basically an integer) to a subgroup of the child nodes.

 ###### Streaming Algorithm

 The Streaming Algorithm implements the actual chunk dissemination protocol.
-The Streaming Algorithm also initializes the VideoStream by calling P2PClient.initVS.
+The Streaming Algorithm also initializes the VideoStream by calling P2PClient.initVS().

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Alex Libov</dc:creator><pubDate>Mon, 09 Jun 2014 08:48:39 -0000</pubDate><guid>https://sourceforge.net6674613f3a4f1a59e93f500c544f39f2403e7048</guid></item><item><title>Developer Guide modified by Alex Libov</title><link>https://sourceforge.net/p/molstream/wiki/Developer%2520Guide/</link><description>&lt;div class="markdown_content"&gt;&lt;h1 id="developer-guide"&gt;Developer Guide&lt;/h1&gt;
&lt;h3 id="basic-classes"&gt;Basic classes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;NodeSpecificImplementation - this class encapsulated the address and unique id of a single node in the system. &lt;/li&gt;
&lt;li&gt;Message - all messages in the system inherit from this class. The class stores the source and destination NodeSpecificImplementations the payload and message tag. The tag is defined by the protocol sending the message so that the message would be received by the corresponding protocol at the target node. a NodeConnectionAlgorithm defines getMessageTag method to be used as tags for sending messages.&lt;/li&gt;
&lt;li&gt;NetworkNode - an abstract class encapsulating all functionality related to the underlying system (network or simulation). NodeConnectionAlgorithm has an instance of a NetworkNode  (called node) to handle all network activities. NetworkNode provides these functions:&lt;ul&gt;
&lt;li&gt;NodeSpecificImplementation getImpl() - return the address of the associated node.&lt;/li&gt;
&lt;li&gt;boolean isUp(NodeSpecificImplementation node) - an implementation of a failure detector.&lt;/li&gt;
&lt;li&gt;boolean send(final Message msg) - sends a message (the target node is specified in the msg object)&lt;/li&gt;
&lt;li&gt;long getUploadBandwidth() - returns the upload bandwidth of the associated node in bits per second&lt;/li&gt;
&lt;li&gt;long getEstimatedLatency(NodeSpecificImplementation key) - a convenience method measuring latency between the associated node and other node.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;P2PClient - the P2Pclient encapsulates all functionality related the the actual playback. It holds an instance of a VideoStream class. each cycle, the client attempts to play the next chunk from the VideoStream.&lt;/li&gt;
&lt;li&gt;VideoStream - the VideoStream class collects all video chunks.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="modules"&gt;Modules&lt;/h3&gt;
&lt;p&gt;MOLStream currently supports three different types of modules:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Clustering Algorithm &lt;/li&gt;
&lt;li&gt;Overlay Algorithm&lt;/li&gt;
&lt;li&gt;Streaming Algorithm&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Each module extends the abstract NodeConnectionAlgorithm class.&lt;br /&gt;
Each module has to implement these two methods:&lt;/p&gt;
&lt;h6 id="public-void-handlemessagemessage-message"&gt;public void handleMessage(Message message);&lt;/h6&gt;
&lt;p&gt;This method is invoked every time a message is received by the module. Messages can be sent to other nodes to be received by the same module. &lt;/p&gt;
&lt;h6 id="public-void-nextcycle"&gt;public void nextCycle();&lt;/h6&gt;
&lt;p&gt;This method is called once every cycle. Cycle length is a parameter.&lt;/p&gt;
&lt;h4 id="module-types"&gt;Module Types&lt;/h4&gt;
&lt;h6 id="clustering-algorithm"&gt;Clustering Algorithm&lt;/h6&gt;
&lt;p&gt;A Clustering algorithm is a NodeConnectionAlgorithm and has to implement both the handleMessage and nextCycle methods. In addition, a Clustering algorithm has to implement the getClusterRepresentative method which returns the NodeSpecificImplementation of the cluster representative of the calling node.&lt;/p&gt;
&lt;h6 id="overlay-algorithm"&gt;Overlay Algorithm&lt;/h6&gt;
&lt;p&gt;The Overlay Algorithm maintains connections to other nodes to create an overlay.&lt;br /&gt;
The Overlay Algorithm exposes a getNeighbors method.&lt;br /&gt;
There are two types of components that inherit from Overlay Algorithm:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;OverlayTreeAlgorithm - adds getParent and getChildren methods.&lt;/li&gt;
&lt;li&gt;GroupedOverlayAlgorithm - splits neighbors into multiple groups that can be retrieved using the getGroup method.&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="streaming-algorithm"&gt;Streaming Algorithm&lt;/h6&gt;
&lt;p&gt;The Streaming Algorithm implements the actual chunk dissemination protocol.&lt;br /&gt;
The Streaming Algorithm also initializes the VideoStream by calling P2PClient.initVS.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Alex Libov</dc:creator><pubDate>Sun, 09 Jun 2013 08:45:39 -0000</pubDate><guid>https://sourceforge.net609356eabf9e5103dbfb86ae59b4840cd7cfb26c</guid></item></channel></rss>