Re: Question on Events

"Guijarro, Julio" <[email protected]> Fri, 29 Aug 2008 13:54:53 +0000
Newsgroups gmane.comp.java.smartfrog.devel
Message-ID <5D68C00A1637064495DB372C4273521B3363E9877A@GVW1117EXC.americas.hpqcorp.net>
--_004_5D68C00A1637064495DB372C4273521B3363E9877AGVW1117EXCame_
Content-Type: multipart/alternative;
	boundary="_000_5D68C00A1637064495DB372C4273521B3363E9877AGVW1117EXCame_"

--_000_5D68C00A1637064495DB372C4273521B3363E9877AGVW1117EXCame_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Hi Richard,



See my answers at the end of your message.



Julio



-----Original Message-----
From: smartfrog-developer-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org [mailto:smartfrog-d=
eveloper-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org] On Behalf Of Richard Achmatowicz
Sent: 06 August 2008 18:10
To: smartfrog-developer-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
Subject: [Smartfrog-developer] Question on Events



Hello



A question on the use of events in the SF workflow. Suppose I have a

configuration of components which looks like this:

c1 extends Parallel {

  p1 extends ... {...}

  }

  c2 extends Parallel {

    p2 extends ... {...}

    p3 extends ... {...}

  }

}

sfConfig extends c1 ;



Here are some of the things I would like to do with events:

(i) send an event from p1 to p3 only

(ii) send an event from p1 to all other leaf components {p2, p3}

(iii) send an event from p1 to all components {c1, c2, p2, p3}



I know I can send an event from a component using a sub-component

EventSend. I know I can handle an event using a subcomponent OnEvent.

For example, the following code allows me to send an event from p1 to p3

(I added in a delay before sending to that the OnEvent components have a

chance to start):



c1 extends Parallel {

    p1 extends Sequence {

      // set up a delay to allow event handler to initialise

      delay extends DoNothing {

        time 2000 ;

      }

      // send an event to p3

      sender extends EventSend {

        sendTo: fred LAZY ATTRIB c2:p3 ;

        event "apache" ;

      }

    }



    c2 extends Parallel {

      p2 extends OnEvent {

        singleEvent false ;

        // event handlers

        otherwise extends LAZY DoNothing {

          time 1000 ;

            message "hello from p2:otherwise" ;

        }

      }



      p3 extends OnEvent {

        singleEvent false ;

        // event handlers

        apache extends LAZY DoNothing {

          time 1000 ;

          message "hello from Apache" ;

        }

        otherwise extends LAZY DoNothing {

          time 1000 ;

          message "hello from p3:otherwise" ;

        }

      }

    }

}

sfConfig extends c1 ;



One thing i'm not clear on is the use of registerWith. It appears that

even if I don't make use of registerWith in this example, the events

manage to reach their destinations (specified with sentTo).



I also tried to send an event to p2 and p3 by sending it to c2, but that di=
dn't work.



>From the manual:

"Both components have LAZY sendTo and registerWith components. These can co=
ntain late-binding links to other components that implement the event frame=
work and define the graph of event forwarding. The registration can be done=
 in both directions; senders can choose recipients while and receivers can =
choose who to listen to. This provides a great deal of flexibility in provi=
ding the configuration for the event-forwarding graph."

This is equivalent to push / pull. A component will send an event to the co=
mponents that are specified in sendTo but there can be other component that=
 chose to receive the event as well for example in your case you could have=
 P2 and P3 registered with C2 so that the received the event that you send.



Therefore, with an example in code:

(ii) send an event from p1 to all other leaf components {p2, p3}

      // send an event to p2 p3

      sender3 extends EventSend {

        sendTo extends {

             p2Sender LAZY ATTRIB c2:p2;

             p3Sender LAZY ATTRIB c2:p3;

        }

        event "otherwise" ;

      }





(iii) send an event from p1 to all components {c1, c2, p2, p3}



The same applies, just add a many components as you want.



The other option is either to make c1 to send to everyone or register all t=
he other (c2,p2,p3) with c1 and then send the event to 1





Are there ways to make use of registerWith in order to implement the use

cases (ii) and (iii)?



For example case (ii) you would need to add the following to p2 and p3:



         registerWith extends DATA {

           s1 LAZY ROOT:c2;

        }



Note that a component can register with as many other components as it want=
s. You can also programmatically register and deregister components at will=
.



You modified example could be something like this (also find it attached to=
 this message):



include "org/smartfrog/components.sf"

#include "org/smartfrog/sfcore/workflow/components.sf"



      delay1s extends DoNothing {

        time 1000 ;

      }



      // set up a delay to allow event handler to initialise

      delay2s extends DoNothing {

        time (2 * 1000) ;

      }



c1 extends Parallel {



    p1 extends Sequence {



      // set up a delay to allow event handler to initialise

      -- extends delay2s;



      // send an event to p3

      sender1 extends EventSend {

        sendTo: fred LAZY ATTRIB c2:p3 ;

        event "apache" ;

      }



      -- extends delay1s;



      // send an event to p3 (otherwise)

      sender2 extends EventSend {

        sendTo: fred LAZY ATTRIB c2:p3 ;

        event "otherwise" ;

      }



      -- extends delay1s;



      // send an event to p2 p3

      sender3 extends EventSend {

        sendTo extends {

             p2Sender LAZY ATTRIB c2:p2;

             p3Sender LAZY ATTRIB c2:p3;

        }

        event "otherwise" ;

      }



      -- extends delay1s;



      // send an event to p2 p3 through c2

      sender4 extends EventSend {

        sendTo extends {

             p3Sender LAZY ATTRIB c2;

        }

        event "otherwise" ;

      }



      -- extends delay1s {time (5 * 1000);}



    }



    c2 extends Parallel {



      p2 extends OnEvent {

         registerWith extends DATA {

           s1 LAZY ROOT:c2;

        }



        singleEvent false ;

        // event handlers

        otherwise extends LAZY DoNothing {

          time 1000 ;

            message "hello from p2:otherwise" ;

        }

      }



      p3 extends OnEvent {

        registerWith extends DATA {

           s1 LAZY ROOT:c2;

        }



        singleEvent false ;

        //registerWith LAZY PARENT;

        // event handlers

        apache extends LAZY DoNothing {

          time 1000 ;

          message "hello from Apache" ;

        }

        otherwise extends LAZY DoNothing {

          time 1000 ;

          message "hello from p3:otherwise" ;

        }

      }

    }

}

sfConfig extends c1 ;







This event system is pretty simple and easy to extend for more complex situ=
ations you could have a look a our new orchestration engine that is "model =
based" instead of "worflow based".



http://smartfrog.svn.sourceforge.net/viewvc/smartfrog/trunk/core/smartfrog/=
docs/SFOrchestration1_2.pdf





In something is not clear just let me know.



Best regards,





Julio Guijarro





-------------------------------------------------------------------------

This SF.Net email is sponsored by the Moblin Your Move Developer's challeng=
e

Build the coolest Linux based applications with Moblin SDK & win great priz=
es

Grand prize is a trip for two to an Open Source event anywhere in the world

http://moblin-contest.org/redirect.php?banner_id=3D100&url=3D/

_______________________________________________

Smartfrog-developer mailing list

Smartfrog-developer-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org

https://lists.sourceforge.net/lists/listinfo/smartfrog-developer

--_000_5D68C00A1637064495DB372C4273521B3363E9877AGVW1117EXCame_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:dt=3D"uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:m=3D"http://sc=
hemas.microsoft.com/office/2004/12/omml" xmlns=3D"http://www.w3.org/TR/REC-=
html40">

<head>
<meta http-equiv=3DContent-Type content=3D"text/html; charset=3Dus-ascii">
<meta name=3DGenerator content=3D"Microsoft Word 12 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
	{font-family:Consolas;
	panose-1:2 11 6 9 2 2 4 3 2 4;}
@font-face
	{font-family:"Lucida Console";
	panose-1:2 11 6 9 4 5 4 2 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0cm;
	margin-bottom:.0001pt;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:blue;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-priority:99;
	color:purple;
	text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
	{mso-style-priority:99;
	mso-style-link:"Plain Text Char";
	margin:0cm;
	margin-bottom:.0001pt;
	font-size:10.5pt;
	font-family:Consolas;}
span.PlainTextChar
	{mso-style-name:"Plain Text Char";
	mso-style-priority:99;
	mso-style-link:"Plain Text";
	font-family:Consolas;}
p.western, li.western, div.western
	{mso-style-name:western;
	mso-margin-top-alt:auto;
	margin-right:0cm;
	margin-bottom:5.95pt;
	margin-left:0cm;
	font-size:10.0pt;
	font-family:"Arial","sans-serif";}
.MsoChpDefault
	{mso-style-type:export-only;}
@page Section1
	{size:612.0pt 792.0pt;
	margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.Section1
	{page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext=3D"edit">
  <o:idmap v:ext=3D"edit" data=3D"1" />
 </o:shapelayout></xml><![endif]-->
</head>

<body lang=3DEN-GB link=3Dblue vlink=3Dpurple>

<div class=3DSection1>

<p class=3DMsoPlainText>Hi Richard,<o:p></o:p></p>

<p class=3DMsoPlainText><o:p>&nbsp;</o:p></p>

<p class=3DMsoPlainText>See my answers at the end of your message.<o:p></o:=
p></p>

<p class=3DMsoPlainText><o:p>&nbsp;</o:p></p>

<p class=3DMsoPlainText>Julio<o:p></o:p></p>

<p class=3DMsoPlainText><a name=3D"_MailEndCompose"><o:p>&nbsp;</o:p></a></=
p>

<p class=3DMsoPlainText><span lang=3DEN-US>-----Original Message-----<br>
From: smartfrog-developer-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
[mailto:smartfrog-developer-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org] On Behalf Of Ric=
hard
Achmatowicz<br>
Sent: 06 August 2008 18:10<br>
To: smartfrog-developer-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org<br>
Subject: [Smartfrog-developer] Question on Events</span><o:p></o:p></p>

<p class=3DMsoPlainText><o:p>&nbsp;</o:p></p>

<p class=3DMsoPlainText>Hello<o:p></o:p></p>

<p class=3DMsoPlainText><o:p>&nbsp;</o:p></p>

<p class=3DMsoPlainText>A question on the use of events in the SF workflow.
Suppose I have a<o:p></o:p></p>

<p class=3DMsoPlainText>configuration of components which looks like this:<=
o:p></o:p></p>

<p class=3DMsoPlainText>c1 extends Parallel {<o:p></o:p></p>

<p class=3DMsoPlainText>&nbsp; p1 extends ... {...}<o:p></o:p></p>

<p class=3DMsoPlainText>&nbsp; }<o:p></o:p></p>

<p class=3DMsoPlainText>&nbsp; c2 extends Parallel {<o:p></o:p></p>

<p class=3DMsoPlainText>&nbsp;&nbsp;&nbsp; p2 extends ... {...}<o:p></o:p><=
/p>

<p class=3DMsoPlainText>&nbsp;&nbsp;&nbsp; p3 extends ... {...}<o:p></o:p><=
/p>

<p class=3DMsoPlainText>&nbsp; }<o:p></o:p></p>

<p class=3DMsoPlainText>}<o:p></o:p></p>

<p class=3DMsoPlainText>sfConfig extends c1 ;<o:p></o:p></p>

<p class=3DMsoPlainText><o:p>&nbsp;</o:p></p>

<p class=3DMsoPlainText>Here are some of the things I would like to do with
events:<o:p></o:p></p>

<p class=3DMsoPlainText>(i) send an event from p1 to p3 only<o:p></o:p></p>

<p class=3DMsoPlainText>(ii) send an event from p1 to all other leaf compon=
ents
{p2, p3}<o:p></o:p></p>

<p class=3DMsoPlainText>(iii) send an event from p1 to all components {c1, =
c2,
p2, p3}<o:p></o:p></p>

<p class=3DMsoPlainText><o:p>&nbsp;</o:p></p>

<p class=3DMsoPlainText>I know I can send an event from a component using a
sub-component<o:p></o:p></p>

<p class=3DMsoPlainText>EventSend. I know I can handle an event using a
subcomponent OnEvent.<o:p></o:p></p>

<p class=3DMsoPlainText>For example, the following code allows me to send a=
n
event from p1 to p3<o:p></o:p></p>

<p class=3DMsoPlainText>(I added in a delay before sending to that the OnEv=
ent
components have a<o:p></o:p></p>

<p class=3DMsoPlainText>chance to start):<o:p></o:p></p>

<p class=3DMsoPlainText><o:p>&nbsp;</o:p></p>

<p class=3DMsoPlainText>c1 extends Parallel {<o:p></o:p></p>

<p class=3DMsoPlainText>&nbsp;&nbsp;&nbsp; p1 extends Sequence {<o:p></o:p>=
</p>

<p class=3DMsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // set up a delay to=
 allow
event handler to initialise<o:p></o:p></p>

<p class=3DMsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; delay extends DoNoth=
ing {<o:p></o:p></p>

<p class=3DMsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; time 200=
0 ;<o:p></o:p></p>

<p class=3DMsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<o:p></o:p></p>

<p class=3DMsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // send an event to =
p3<o:p></o:p></p>

<p class=3DMsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sender extends Event=
Send {<o:p></o:p></p>

<p class=3DMsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sendTo: =
fred
LAZY ATTRIB c2:p3 ;<o:p></o:p></p>

<p class=3DMsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; event
&quot;apache&quot; ;<o:p></o:p></p>

<p class=3DMsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<o:p></o:p></p>

<p class=3DMsoPlainText>&nbsp;&nbsp;&nbsp; }<o:p></o:p></p>

<p class=3DMsoPlainText><o:p>&nbsp;</o:p></p>

<p class=3DMsoPlainText>&nbsp;&nbsp;&nbsp; c2 extends Parallel {<o:p></o:p>=
</p>

<p class=3DMsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p2 extends OnEvent {=
<o:p></o:p></p>

<p class=3DMsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; singleEv=
ent
false ;<o:p></o:p></p>

<p class=3DMsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // event
handlers<o:p></o:p></p>

<p class=3DMsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; otherwis=
e
extends LAZY DoNothing {<o:p></o:p></p>

<p class=3DMsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;
time 1000 ;<o:p></o:p></p>

<p class=3DMsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;
message &quot;hello from p2:otherwise&quot; ;<o:p></o:p></p>

<p class=3DMsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<o:p></=
o:p></p>

<p class=3DMsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<o:p></o:p></p>

<p class=3DMsoPlainText><o:p>&nbsp;</o:p></p>

<p class=3DMsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p3 extends OnEvent {=
<o:p></o:p></p>

<p class=3DMsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; singleEv=
ent
false ;<o:p></o:p></p>

<p class=3DMsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // event
handlers<o:p></o:p></p>

<p class=3DMsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; apache e=
xtends
LAZY DoNothing {<o:p></o:p></p>

<p class=3DMsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;
time 1000 ;<o:p></o:p></p>

<p class=3DMsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;
message &quot;hello from Apache&quot; ;<o:p></o:p></p>

<p class=3DMsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<o:p></=
o:p></p>

<p class=3DMsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; otherwis=
e
extends LAZY DoNothing {<o:p></o:p></p>

<p class=3DMsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;
time 1000 ;<o:p></o:p></p>

<p class=3DMsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;
message &quot;hello from p3:otherwise&quot; ;<o:p></o:p></p>

<p class=3DMsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<o:p></=
o:p></p>

<p class=3DMsoPlainText>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<o:p></o:p></p>

<p class=3DMsoPlainText>&nbsp;&nbsp;&nbsp; }<o:p></o:p></p>

<p class=3DMsoPlainText>}<o:p></o:p></p>

<p class=3DMsoPlainText>sfConfig extends c1 ;<o:p></o:p></p>

<p class=3DMsoPlainText><o:p>&nbsp;</o:p></p>

<p class=3DMsoPlainText>One thing i'm not clear on is the use of registerWi=
th. It
appears that<o:p></o:p></p>

<p class=3DMsoPlainText>even if I don't make use of registerWith in this ex=
ample,
the events<o:p></o:p></p>

<p class=3DMsoPlainText>manage to reach their destinations (specified with
sentTo).<o:p></o:p></p>

<p class=3DMsoPlainText><o:p>&nbsp;</o:p></p>

<p class=3DMsoPlainText>I also tried to send an event to p2 and p3 by sendi=
ng it
to c2, but that didn't work.<o:p></o:p></p>

<p class=3DMsoPlainText><o:p>&nbsp;</o:p></p>

<p class=3Dwestern><span style=3D'color:#943634'>From the manual: <o:p></o:=
p></span></p>

<p class=3Dwestern><span style=3D'color:#943634'>&#8220;Both components hav=
e </span><span
style=3D'font-size:9.0pt;font-family:"Lucida Console";color:#943634'>LAZY</=
span><span
style=3D'color:#943634'> </span><span style=3D'font-size:9.0pt;font-family:=
"Lucida Console";
color:#943634'>sendTo</span><span style=3D'color:#943634'> and </span><span
style=3D'font-size:9.0pt;font-family:"Lucida Console";color:#943634'>regist=
erWith</span><span
style=3D'color:#943634'> components. These can contain late-binding links t=
o
other components that implement the event framework and define the graph of
event forwarding. The registration can be done in both directions; senders =
can
choose recipients while and receivers can choose who to listen to. This
provides a great deal of flexibility in providing the configuration for the
event-forwarding graph.&#8221;<o:p></o:p></span></p>

<p class=3Dwestern><span style=3D'color:#943634'>This is equivalent to push=
 / pull.
A component will send an event to the components that are specified in send=
To
but there can be other component that chose to receive the event as well fo=
r
example in your case you could have P2 and P3 registered with C2 so that th=
e
received the event that you send.<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'><o:p>&nbsp;</o:p></sp=
an></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>Therefore, with an ex=
ample in
code:<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>(ii) send an event fr=
om p1 to
all other leaf components {p2, p3}<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;
// send an event to p2 p3<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;
sender3 extends EventSend {<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;
sendTo extends {<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
p2Sender LAZY ATTRIB c2:p2;<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
p3Sender LAZY ATTRIB c2:p3;<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;
event &quot;otherwise&quot; ;<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;
}<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'><o:p>&nbsp;</o:p></sp=
an></p>

<p class=3DMsoPlainText><o:p>&nbsp;</o:p></p>

<p class=3DMsoPlainText>(iii) send an event from p1 to all components {c1, =
c2,
p2, p3}<o:p></o:p></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'><o:p>&nbsp;</o:p></sp=
an></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>The same applies, jus=
t add a
many components as you want.<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'><o:p>&nbsp;</o:p></sp=
an></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>The other option is e=
ither to
make c1 to send to everyone or register all the other (c2,p2,p3) with c1 an=
d then
send the event to 1<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'><o:p>&nbsp;</o:p></sp=
an></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'><o:p>&nbsp;</o:p></sp=
an></p>

<p class=3DMsoPlainText>Are there ways to make use of registerWith in order=
 to
implement the use<o:p></o:p></p>

<p class=3DMsoPlainText>cases (ii) and (iii)?<o:p></o:p></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'><o:p>&nbsp;</o:p></sp=
an></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>For example case (ii)=
 you
would need to add the following to p2 and p3:<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'><o:p>&nbsp;</o:p></sp=
an></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;
registerWith extends DATA {<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
s1 LAZY ROOT:c2;<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'><o:p>&nbsp;</o:p></sp=
an></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>Note that a component=
 can
register with as many other components as it wants. You can also programmat=
ically
register and deregister components at will. <o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'><o:p>&nbsp;</o:p></sp=
an></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>You modified example =
could be
something like this (also find it attached to this message):<o:p></o:p></sp=
an></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'><o:p>&nbsp;</o:p></sp=
an></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>include
&quot;org/smartfrog/components.sf&quot; <o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>#include
&quot;org/smartfrog/sfcore/workflow/components.sf&quot; <o:p></o:p></span><=
/p>

<p class=3DMsoPlainText><span style=3D'color:#943634'><o:p>&nbsp;</o:p></sp=
an></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;
delay1s extends DoNothing {<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;
time 1000 ;<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;
}<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'><o:p>&nbsp;</o:p></sp=
an></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;
// set up a delay to allow event handler to initialise<o:p></o:p></span></p=
>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;
delay2s extends DoNothing {<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;
time (2 * 1000) ;<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;
}<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'><o:p>&nbsp;</o:p></sp=
an></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>c1 extends Parallel {=
<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp; <o=
:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp; p1=
 extends
Sequence {<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp; <o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;
// set up a delay to allow event handler to initialise<o:p></o:p></span></p=
>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;
-- extends delay2s;<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'><o:p>&nbsp;</o:p></sp=
an></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;
// send an event to p3<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;
sender1 extends EventSend {<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;
sendTo: fred LAZY ATTRIB c2:p3 ;<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;
event &quot;apache&quot; ;<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;
}<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'><o:p>&nbsp;</o:p></sp=
an></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;
-- extends delay1s;<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'><o:p>&nbsp;</o:p></sp=
an></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;
// send an event to p3 (otherwise)<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;
sender2 extends EventSend {<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;
sendTo: fred LAZY ATTRIB c2:p3 ;<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;
event &quot;otherwise&quot; ;<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;
}<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'><o:p>&nbsp;</o:p></sp=
an></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;
-- extends delay1s;<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'><o:p>&nbsp;</o:p></sp=
an></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;
// send an event to p2 p3<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;
sender3 extends EventSend {<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;
sendTo extends {<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
p2Sender LAZY ATTRIB c2:p2;<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
p3Sender LAZY ATTRIB c2:p3;<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;
event &quot;otherwise&quot; ;<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;
}<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;
<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;
-- extends delay1s;<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'><o:p>&nbsp;</o:p></sp=
an></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;
// send an event to p2 p3 through c2<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;
sender4 extends EventSend {<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;
sendTo extends {<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
p3Sender LAZY ATTRIB c2;<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;
event &quot;otherwise&quot; ;<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;
}<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'><o:p>&nbsp;</o:p></sp=
an></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;
-- extends delay1s {time (5 * 1000);}<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'><o:p>&nbsp;</o:p></sp=
an></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp; }<=
o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'><o:p>&nbsp;</o:p></sp=
an></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp; c2=
 extends
Parallel {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'><o:p>&nbsp;</o:p></sp=
an></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;
p2 extends OnEvent {<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;
registerWith extends DATA {<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
s1 LAZY ROOT:c2;<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp; <o=
:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;
singleEvent false ;<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;
// event handlers<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;
otherwise extends LAZY DoNothing {<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
time 1000 ;<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
message &quot;hello from p2:otherwise&quot; ;<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;
}<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'><o:p>&nbsp;</o:p></sp=
an></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;
p3 extends OnEvent {<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;
registerWith extends DATA {<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
s1 LAZY ROOT:c2;<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'><o:p>&nbsp;</o:p></sp=
an></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;
singleEvent false ;<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;
//registerWith LAZY PARENT;<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;
// event handlers<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;
apache extends LAZY DoNothing {<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
time 1000 ;<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
message &quot;hello from Apache&quot; ;<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;
otherwise extends LAZY DoNothing {<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
time 1000 ;<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
message &quot;hello from p3:otherwise&quot; ;<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;
}<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;
}<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>&nbsp;&nbsp;&nbsp; }<=
o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>}<o:p></o:p></span></=
p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>sfConfig extends c1 ;=
<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'><o:p>&nbsp;</o:p></sp=
an></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'><o:p>&nbsp;</o:p></sp=
an></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'><o:p>&nbsp;</o:p></sp=
an></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>This event system is =
pretty
simple and easy to extend for more complex situations you could have a look=
 a
our new orchestration engine that is &#8220;model based&#8221; instead of &=
#8220;worflow
based&#8221;.<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'><o:p>&nbsp;</o:p></sp=
an></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'><a
href=3D"http://smartfrog.svn.sourceforge.net/viewvc/smartfrog/trunk/core/sm=
artfrog/docs/SFOrchestration1_2.pdf">http://smartfrog.svn.sourceforge.net/v=
iewvc/smartfrog/trunk/core/smartfrog/docs/SFOrchestration1_2.pdf</a><o:p></=
o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'><o:p>&nbsp;</o:p></sp=
an></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'><o:p>&nbsp;</o:p></sp=
an></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>In something is not c=
lear
just let me know.<o:p></o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'><o:p>&nbsp;</o:p></sp=
an></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>Best regards,<o:p></o=
:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'><o:p>&nbsp;</o:p></sp=
an></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'><o:p>&nbsp;</o:p></sp=
an></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'>Julio Guijarro<o:p></=
o:p></span></p>

<p class=3DMsoPlainText><span style=3D'color:#943634'><o:p>&nbsp;</o:p></sp=
an></p>

<p class=3DMsoPlainText><o:p>&nbsp;</o:p></p>

<p class=3DMsoPlainText>---------------------------------------------------=
----------------------<o:p></o:p></p>

<p class=3DMsoPlainText>This SF.Net email is sponsored by the Moblin Your M=
ove
Developer's challenge<o:p></o:p></p>

<p class=3DMsoPlainText>Build the coolest Linux based applications with Mob=
lin
SDK &amp; win great prizes<o:p></o:p></p>

<p class=3DMsoPlainText>Grand prize is a trip for two to an Open Source eve=
nt
anywhere in the world<o:p></o:p></p>

<p class=3DMsoPlainText>http://moblin-contest.org/redirect.php?banner_id=3D=
100&amp;url=3D/<o:p></o:p></p>

<p class=3DMsoPlainText>_______________________________________________<o:p=
></o:p></p>

<p class=3DMsoPlainText>Smartfrog-developer mailing list<o:p></o:p></p>

<p class=3DMsoPlainText>Smartfrog-developer-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org<o:p></o:p=
></p>

<p class=3DMsoPlainText>https://lists.sourceforge.net/lists/listinfo/smartf=
rog-developer<o:p></o:p></p>

</div>

</body>

</html>

--_000_5D68C00A1637064495DB372C4273521B3363E9877AGVW1117EXCame_--

--_004_5D68C00A1637064495DB372C4273521B3363E9877AGVW1117EXCame_
Content-Type: application/octet-stream; name="testWF.sf"
Content-Description: testWF.sf
Content-Disposition: attachment; filename="testWF.sf"; size=2063;
	creation-date="Fri, 29 Aug 2008 12:41:36 GMT";
	modification-date="Fri, 29 Aug 2008 13:33:22 GMT"
Content-Transfer-Encoding: base64

I2luY2x1ZGUgIm9yZy9zbWFydGZyb2cvY29tcG9uZW50cy5zZiIgCiNpbmNsdWRlICJvcmcvc21h
cnRmcm9nL3NmY29yZS93b3JrZmxvdy9jb21wb25lbnRzLnNmIiAKCiAgICAgIGRlbGF5MXMgZXh0
ZW5kcyBEb05vdGhpbmcgewogICAgICAgIHRpbWUgMTAwMCA7CiAgICAgIH0KCiAgICAgIC8vIHNl
dCB1cCBhIGRlbGF5IHRvIGFsbG93IGV2ZW50IGhhbmRsZXIgdG8gaW5pdGlhbGlzZQogICAgICBk
ZWxheTJzIGV4dGVuZHMgRG9Ob3RoaW5nIHsKICAgICAgICB0aW1lICgyICogMTAwMCkgOwogICAg
ICB9CgpjMSBleHRlbmRzIFBhcmFsbGVsIHsKICAgIAogICAgcDEgZXh0ZW5kcyBTZXF1ZW5jZSB7
CiAgICAgCiAgICAgIC8vIHNldCB1cCBhIGRlbGF5IHRvIGFsbG93IGV2ZW50IGhhbmRsZXIgdG8g
aW5pdGlhbGlzZQogICAgICAtLSBleHRlbmRzIGRlbGF5MnM7CgogICAgICAvLyBzZW5kIGFuIGV2
ZW50IHRvIHAzCiAgICAgIHNlbmRlcjEgZXh0ZW5kcyBFdmVudFNlbmQgewogICAgICAgIHNlbmRU
bzogZnJlZCBMQVpZIEFUVFJJQiBjMjpwMyA7CiAgICAgICAgZXZlbnQgImFwYWNoZSIgOwogICAg
ICB9CgogICAgICAtLSBleHRlbmRzIGRlbGF5MXM7CgogICAgICAvLyBzZW5kIGFuIGV2ZW50IHRv
IHAzIChvdGhlcndpc2UpCiAgICAgIHNlbmRlcjIgZXh0ZW5kcyBFdmVudFNlbmQgewogICAgICAg
IHNlbmRUbzogZnJlZCBMQVpZIEFUVFJJQiBjMjpwMyA7CiAgICAgICAgZXZlbnQgIm90aGVyd2lz
ZSIgOwogICAgICB9CgogICAgICAtLSBleHRlbmRzIGRlbGF5MXM7CgogICAgICAvLyBzZW5kIGFu
IGV2ZW50IHRvIHAyIHAzCiAgICAgIHNlbmRlcjMgZXh0ZW5kcyBFdmVudFNlbmQgewogICAgICAg
IHNlbmRUbyBleHRlbmRzIHsKICAgICAgICAgICAgIHAyU2VuZGVyIExBWlkgQVRUUklCIGMyOnAy
OwogICAgICAgICAgICAgcDNTZW5kZXIgTEFaWSBBVFRSSUIgYzI6cDM7CiAgICAgICAgfQogICAg
ICAgIGV2ZW50ICJvdGhlcndpc2UiIDsKICAgICAgfQogICAgICAKICAgICAgLS0gZXh0ZW5kcyBk
ZWxheTFzOwoKICAgICAgLy8gc2VuZCBhbiBldmVudCB0byBwMiBwMyB0aHJvdWdoIGMyCiAgICAg
IHNlbmRlcjQgZXh0ZW5kcyBFdmVudFNlbmQgewogICAgICAgIHNlbmRUbyBleHRlbmRzIHsKICAg
ICAgICAgICAgIHAzU2VuZGVyIExBWlkgQVRUUklCIGMyOwogICAgICAgIH0KICAgICAgICBldmVu
dCAib3RoZXJ3aXNlIiA7CiAgICAgIH0KCiAgICAgIC0tIGV4dGVuZHMgZGVsYXkxcyB7dGltZSAo
NSAqIDEwMDApO30KCiAgICB9CgogICAgYzIgZXh0ZW5kcyBQYXJhbGxlbCB7ICAgICAgCgogICAg
ICBwMiBleHRlbmRzIE9uRXZlbnQgewogICAgICAgICByZWdpc3RlcldpdGggZXh0ZW5kcyBEQVRB
IHsKICAgICAgICAgICBzMSBMQVpZIFJPT1Q6YzI7CiAgICAgICAgfQogICAgCiAgICAgICAgc2lu
Z2xlRXZlbnQgZmFsc2UgOwogICAgICAgIC8vIGV2ZW50IGhhbmRsZXJzCiAgICAgICAgb3RoZXJ3
aXNlIGV4dGVuZHMgTEFaWSBEb05vdGhpbmcgewogICAgICAgICAgdGltZSAxMDAwIDsKICAgICAg
ICAgICAgbWVzc2FnZSAiaGVsbG8gZnJvbSBwMjpvdGhlcndpc2UiIDsKICAgICAgICB9CiAgICAg
IH0KCiAgICAgIHAzIGV4dGVuZHMgT25FdmVudCB7CiAgICAgICAgcmVnaXN0ZXJXaXRoIGV4dGVu
ZHMgREFUQSB7CiAgICAgICAgICAgczEgTEFaWSBST09UOmMyOwogICAgICAgIH0KCiAgICAgICAg
c2luZ2xlRXZlbnQgZmFsc2UgOwogICAgICAgIC8vcmVnaXN0ZXJXaXRoIExBWlkgUEFSRU5UOwog
ICAgICAgIC8vIGV2ZW50IGhhbmRsZXJzCiAgICAgICAgYXBhY2hlIGV4dGVuZHMgTEFaWSBEb05v
dGhpbmcgewogICAgICAgICAgdGltZSAxMDAwIDsKICAgICAgICAgIG1lc3NhZ2UgImhlbGxvIGZy
b20gQXBhY2hlIiA7CiAgICAgICAgfQogICAgICAgIG90aGVyd2lzZSBleHRlbmRzIExBWlkgRG9O
b3RoaW5nIHsKICAgICAgICAgIHRpbWUgMTAwMCA7CiAgICAgICAgICBtZXNzYWdlICJoZWxsbyBm
cm9tIHAzOm90aGVyd2lzZSIgOwogICAgICAgIH0KICAgICAgfQogICAgfQp9CnNmQ29uZmlnIGV4
dGVuZHMgYzEgOwo=

--_004_5D68C00A1637064495DB372C4273521B3363E9877AGVW1117EXCame_
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
--_004_5D68C00A1637064495DB372C4273521B3363E9877AGVW1117EXCame_
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Smartfrog-developer mailing list
Smartfrog-developer-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
https://lists.sourceforge.net/lists/listinfo/smartfrog-developer

--_004_5D68C00A1637064495DB372C4273521B3363E9877AGVW1117EXCame_--