<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]-->
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 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.MsoAcetate, li.MsoAcetate, div.MsoAcetate
        {mso-style-priority:99;
        mso-style-link:"Texto de globo Car";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:8.0pt;
        font-family:"Tahoma","sans-serif";}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0cm;
        margin-right:0cm;
        margin-bottom:0cm;
        margin-left:36.0pt;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
span.EstiloCorreo17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.TextodegloboCar
        {mso-style-name:"Texto de globo Car";
        mso-style-priority:99;
        mso-style-link:"Texto de globo";
        font-family:"Tahoma","sans-serif";}
.MsoChpDefault
        {mso-style-type:export-only;}
@page Section1
        {size:612.0pt 792.0pt;
        margin:70.85pt 3.0cm 70.85pt 3.0cm;}
div.Section1
        {page:Section1;}
 /* List Definitions */
 @list l0
        {mso-list-id:551695047;
        mso-list-type:hybrid;
        mso-list-template-ids:-1222503446 1100142302 201981977 201981979 201981967 201981977 201981979 201981967 201981977 201981979;}
@list l0:level1
        {mso-level-text:%1-;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
ol
        {margin-bottom:0cm;}
ul
        {margin-bottom:0cm;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="2050" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1" />
 </o:shapelayout></xml><![endif]-->
</head>

<body lang=ES link=blue vlink=purple>

<div class=Section1>

<p class=MsoNormal><span lang=EN-US>Hi all!!!<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US>There are any body here who really like
C#!, and who want to do some stuffs combining this two wonderful technologies?<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><span lang=EN-US>** New ExtendedVisualOtp release 1.6. **<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><span lang=EN-US>All you dream as impossible is now
possible.<o:p></o:p></span></p>

<p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span
lang=EN-US><span style='mso-list:Ignore'>1-<span style='font:7.0pt "Times New Roman"'>     
</span></span></span><![endif]><span lang=EN-US>Multiple server connections
from the same client.<o:p></o:p></span></p>

<p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span
lang=EN-US><span style='mso-list:Ignore'>2-<span style='font:7.0pt "Times New Roman"'>     
</span></span></span><![endif]><span lang=EN-US>Real-time message passing (obviously
thx to Erlang) between the C# client and Erlang server.<o:p></o:p></span></p>

<p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span
lang=EN-US><span style='mso-list:Ignore'>3-<span style='font:7.0pt "Times New Roman"'>     
</span></span></span><![endif]><span lang=EN-US>Request abort feature (a request
aborted in the client, abort its resolver process in the server).<o:p></o:p></span></p>

<p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span
lang=EN-US><span style='mso-list:Ignore'>4-<span style='font:7.0pt "Times New Roman"'>     
</span></span></span><![endif]><span lang=EN-US>Multiple Sync and Async request
at the same time to different servers form the same client.<o:p></o:p></span></p>

<p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span
lang=EN-US><span style='mso-list:Ignore'>5-<span style='font:7.0pt "Times New Roman"'>     
</span></span></span><![endif]><span lang=EN-US>Unknown Incoming messages
treating in the client (the server can send massive messages to all the
connected clients, useful for games server and chats),<o:p></o:p></span></p>

<p class=MsoListParagraph><span lang=EN-US>only using a little function like
send_to_all(Description, Message) or send_to_others(Description, Message,
ExceptionPid).<o:p></o:p></span></p>

<p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span
lang=EN-US><span style='mso-list:Ignore'>6-<span style='font:7.0pt "Times New Roman"'>     
</span></span></span><![endif]><span lang=EN-US>Other features like Abort a
waiting for a reply request from another threat. A server disconnection makes
all Waiting Requests to release and return null.<o:p></o:p></span></p>

<p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span
lang=EN-US><span style='mso-list:Ignore'>7-<span style='font:7.0pt "Times New Roman"'>     
</span></span></span><![endif]><span lang=EN-US>You can send objects of any
kind to the server and to be received in other clients (like classes, images
etc.)<o:p></o:p></span></p>

<p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span
lang=EN-US><span style='mso-list:Ignore'>8-<span style='font:7.0pt "Times New Roman"'>     
</span></span></span><![endif]><span lang=EN-US>You can make Sync requests
without any fear of getting locks because if the answer for the request arrives
before you call the WaitForReply function this function will throw an Error
telling you that the request was already answered an received through the
OnReceive Event of the async way.<o:p></o:p></span></p>

<p class=MsoListParagraph><span lang=EN-US>Example:<o:p></o:p></span></p>

<p class=MsoListParagraph><span lang=EN-US>IRequestInfo reqinfo =
requestHanlder.Request(“Hola mundo”);<o:p></o:p></span></p>

<p class=MsoListParagraph><span lang=EN-US>Thread.Sleep(1000);   // if the answer
arrives before, through the OnReceive event because this fool! Then the next
sentence will throw an error<o:p></o:p></span></p>

<p class=MsoListParagraph><span lang=EN-US>reqinfo.WaitForReply();  or reqinfo.WaitForReply(5000);<o:p></o:p></span></p>

<p class=MsoListParagraph><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoListParagraph><span lang=EN-US>You will never get locks using Sync
requests. And if you are not sure use a timeout.<o:p></o:p></span></p>

<p class=MsoListParagraph><span lang=EN-US>The same way you can abort the
request using reqinfo object: reqinfo.AbortRequest(); or know if the request
was already answered or made using its properties.<o:p></o:p></span></p>

<p class=MsoListParagraph><span lang=EN-US>You can do many stuffs using
IServerReply and IRequestInfo objects, example: using IServerReply object you
can use a property to convert the Erlang terms to CSharp terms and vice versa. <o:p></o:p></span></p>

<p class=MsoListParagraph><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span
lang=EN-US><span style='mso-list:Ignore'>9-<span style='font:7.0pt "Times New Roman"'>     
</span></span></span><![endif]><span lang=EN-US>You can program clients as
server-client model of the most easy way (only if you don’t want to write
any code in Erlang, just in C#) you can configure de clients<o:p></o:p></span></p>

<p class=MsoListParagraph><span lang=EN-US>and the server to act as
intermediary between the clients of so easy way. Using the informing message
that send the server to all the clients when a new client is connected or
disconnected, sending if you want, its pid to all the other clients, then you
can get that pid to send a message using the server as intermediary “directly”
to that other client or register that client in the server as a server prototype,
this make possible to program the client-server model with the clients without
write any line of code in Erlang. The automatic replier that brings with the framework
ExtendedVisualOtp in the server part do all the dirty work for you.<o:p></o:p></span></p>

<p class=MsoListParagraph style='text-indent:-18.0pt;mso-list:l0 level1 lfo1'><![if !supportLists]><span
lang=EN-US><span style='mso-list:Ignore'>10-<span style='font:7.0pt "Times New Roman"'>  
</span></span></span><![endif]><span lang=EN-US>You can send whatever you have
been programming to your friends who are programming under ExtendedVisualOtp so,
with a simple call to the function <o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:18.0pt;text-indent:17.4pt'><span
lang=EN-US>PublishClientImage(); of the ErlangServerRequest class. Then your
program image in runtime it will be executed at the machines of your friends
who are connected to the <o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:18.0pt;text-indent:17.4pt'><span
lang=EN-US>server so. Then if you are developing a chat, you can send the image
of your program while your friend is programming other chat or program and see
your creation, at the <o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:18.0pt;text-indent:17.4pt'><span
lang=EN-US>same time he can send to you his creation.<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><span lang=EN-US>The most powerful interface between languages
ever known ExtendedVisualOtp. That and so much more EVO Release 1.6<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><span lang=EN-US>Little examples:<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><span lang=EN-US>…the C# part:<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US>erlangServerInterface1.Connect();<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US>erlangServerRequest1.Request(new object[] {“’insert_person’”,
“Ivan”, 26, “Male”});<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><span lang=EN-US>…the Erlang part:<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US>{’insert_person’”, Name, Age,
Sex}, Pid, RequestInfo}-><o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US>    ….<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US>    Pid ! {reply, ‘inserted_ok’,
RequestInfo};    %% if you want to answer to the client who made the request.<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><span lang=EN-US>To receive the answer in the client<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><span lang=EN-US>If you use the sync way, add
.WaitForReply().CSharpReply…    at the end of the request line before…<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><span lang=EN-US>And if you want the async way just use the
OnReceive event<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><span lang=EN-US>OnReceiveEvent..(IServerReply _reply)<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US>{<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US>        If (_<i>reply.Description == “insert</i>_person”)
{<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US>                MessageBox.Show(_reply.CSharpReply
as string);<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US>        }<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US>}<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><span lang=EN-US>As simple like it seems and powerful as it could
not seems.<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><b><span lang=EN-US>-------------------------------------------------------------------------------------------------------------<o:p></o:p></span></b></p>

<p class=MsoNormal><b><span lang=EN-US>Ing: Ivan Carmenates García<o:p></o:p></span></b></p>

<p class=MsoNormal><span lang=EN-US>Current project: ExtendedVisualOtp and
Erlang Book: "Erlang Avanzado para principiantes"<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US>Ivanco Software Company in association with
SPI Team<o:p></o:p></span></p>

<p class=MsoNormal><!--[if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600" 
 o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" 
 stroked="f">
 <v:stroke joinstyle="miter" />
 <v:formulas>
  <v:f eqn="if lineDrawn pixelLineWidth 0" />
  <v:f eqn="sum @0 1 0" />
  <v:f eqn="sum 0 0 @1" />
  <v:f eqn="prod @2 1 2" />
  <v:f eqn="prod @3 21600 pixelWidth" />
  <v:f eqn="prod @3 21600 pixelHeight" />
  <v:f eqn="sum @0 0 1" />
  <v:f eqn="prod @6 1 2" />
  <v:f eqn="prod @7 21600 pixelWidth" />
  <v:f eqn="sum @8 21600 0" />
  <v:f eqn="prod @7 21600 pixelHeight" />
  <v:f eqn="sum @10 21600 0" />
 </v:formulas>
 <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect" />
 <o:lock v:ext="edit" aspectratio="t" />
</v:shapetype><v:shape id="Imagen_x0020_2" o:spid="_x0000_s1026" type="#_x0000_t75" 
 alt="spi_red32" style='position:absolute;margin-left:51.85pt;margin-top:6.65pt;
 width:24.1pt;height:24pt;z-index:-1;visibility:visible;mso-wrap-style:square;
 mso-wrap-distance-left:9pt;mso-wrap-distance-top:0;mso-wrap-distance-right:9pt;
 mso-wrap-distance-bottom:0;mso-position-horizontal:absolute;
 mso-position-horizontal-relative:text;mso-position-vertical:absolute;
 mso-position-vertical-relative:text'>
 <v:imagedata src="cid:image001.png@01CBB6FF.90CD9920" o:title="spi_red32" />
</v:shape><![endif]--><![if !vml]><span style='mso-ignore:vglayout;position:
absolute;z-index:-1;margin-left:69px;margin-top:9px;width:32px;height:32px'><img
width=32 height=32 src="cid:image001.png@01CBB6FF.90CD9920" alt="spi_red32"
v:shapes="Imagen_x0020_2"></span><![endif]><img width=69 height=61
id="Imagen_x0020_1" src="cid:image003.png@01CBB707.F1860F60" alt=LogoSPI><span
lang=EN-US><o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><span lang=EN-US><o:p> </o:p></span></p>

<p class=MsoNormal><o:p> </o:p></p>

</div>

<br>=======================================================================<br>
Este mensaje ha sido enviado mediante el servicio de correo electrónico que ofrece la Federación de Radioaficionados de Cuba a sus miembros para respaldar el cumplimiento de los objetivos de la organización y su política informativa. La persona que envía este correo asume el compromiso de  usar el servicio a tales fines y cumplir con las regulaciones establecidas.<br>
</body>

</html>