<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Centralino Voip &#187; Programmazione</title>
	<atom:link href="http://centralino-voip.brunosalzano.com/category/archivio/programmazione/feed/" rel="self" type="application/rss+xml" />
	<link>http://centralino-voip.brunosalzano.com</link>
	<description>Call Center, Contact Center, Voip, Centralino, asterisk, telefonia</description>
	<lastBuildDate>Sat, 27 Mar 2010 10:10:31 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>GTK Porting Asterisk CTI</title>
		<link>http://centralino-voip.brunosalzano.com/gtk-porting-asterisk-cti-multipiattaforma/</link>
		<comments>http://centralino-voip.brunosalzano.com/gtk-porting-asterisk-cti-multipiattaforma/#comments</comments>
		<pubDate>Mon, 01 Dec 2008 23:05:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Voip]]></category>

		<guid isPermaLink="false">http://centralino-voip.brunosalzano.com/?p=94</guid>
		<description><![CDATA[English Version








Ho iniziato da qualche settimana una ristrutturazione generale di Asterisk CTI. La nuova versione, per la quale un rilascio è previsto orientativamente per i primi mesi del 2009, rappresenta una rivoluzione rispetto alla prima versione del progetto.
Le principali novità sono:

Approccio completamente rinnovato: centralizzazione sul server della configurazione dei servizi e dei client abilitati ad [...]]]></description>
			<content:encoded><![CDATA[<div style="text-align: right"><a title="GTK Porting Asterisk CTI (English Version)" href="http://centralino-voip.brunosalzano.com/gtk-porting-asterisk-cti-multiplatform/" target="_self">English Version</a></div>
<table border="0" cellspacing="1">
<tbody>
<tr>
<td><a class="thickbox" title="Asterisk CTI GTK" href="http://centralino-voip.brunosalzano.com/wp-content/gallery/news/astcti_gtk.jpg"><img class="ngg-singlepic ngg-none" src="http://centralino-voip.brunosalzano.com/wp-content/gallery/news/thumbs/thumbs_astcti_gtk.jpg" alt="astcti_gtk.jpg" /></a></td>
<td><a class="thickbox" title="Asterisk CTI Gtk Linux" href="http://centralino-voip.brunosalzano.com/wp-content/gallery/news/astcti_gtk_lin.jpg"><img class="ngg-singlepic ngg-none" src="http://centralino-voip.brunosalzano.com/wp-content/gallery/news/thumbs/thumbs_astcti_gtk_lin.jpg" alt="astcti_gtk_lin.jpg" /></a></td>
</tr>
</tbody>
</table>
<p>Ho iniziato da qualche settimana una ristrutturazione generale di Asterisk CTI. La nuova versione, per la quale un rilascio è previsto orientativamente per i primi mesi del 2009, rappresenta una rivoluzione rispetto alla prima versione del progetto.</p>
<p>Le principali novità sono:</p>
<ul>
<li>Approccio completamente rinnovato: centralizzazione sul server della configurazione dei servizi e dei client abilitati ad essere notificati delle chiamate, nonchè degli applicativi da lanciare sulle postazioni.</li>
<li>Software completamente riscritto in C# con mono, usando le librerie GTK. Questo consentirà di avere un software realmente multipiattaforma.</li>
<li>Client, denominato AstCTIClient, riscritto in GTK e multipiattaforma.</li>
<li>Tutta la configurazione potrà essere gestita da un software chiamato AstCTIConfigurator. e verrà salvata in un database MySQL.</li>
<li>Le configurazioni verranno salvate in un file XML caricato all&#8217;avvio da AstCTIServer: questo renderà il server indipendente da eventuali failures del database MySQL.</li>
<li>Supporto multilanguage.</li>
</ul>
<p>Naturalmente si tratta di un progetto Open Source sotto licenza GPL e a breve provvederò a caricare i sorgenti su una apposita pagina di progetto su google-code. Attendo vostri commenti, feedback e, sopratutto una partecipazione al progetto!</p>

<span class="slashdigglicious">
<a href="http://slashdot.org/bookmark.pl?url=http%3A%2F%2Fcentralino-voip.brunosalzano.com%2Fgtk-porting-asterisk-cti-multipiattaforma%2F&amp;title=GTK+Porting+Asterisk+CTI" title="Slashdot It!"><img src="http://slashdot.org/favicon.ico" height="16" width="16" alt="[Slashdot]" /></a>
<a href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fcentralino-voip.brunosalzano.com%2Fgtk-porting-asterisk-cti-multipiattaforma%2F&amp;title=GTK+Porting+Asterisk+CTI" title="Digg This Story"><img src="http://digg.com/favicon.ico" width="16" height="16" alt="[Digg]" /></a>
<a href="http://reddit.com/submit?url=http%3A%2F%2Fcentralino-voip.brunosalzano.com%2Fgtk-porting-asterisk-cti-multipiattaforma%2F&amp;title=GTK+Porting+Asterisk+CTI" title="Reddit"><img src="http://reddit.com/favicon.ico" width="16" height="16" alt="[Reddit]" /></a>
<a href="http://del.icio.us/post?url=http%3A%2F%2Fcentralino-voip.brunosalzano.com%2Fgtk-porting-asterisk-cti-multipiattaforma%2F&amp;title=GTK+Porting+Asterisk+CTI" title="Save to del.icio.us" onclick="window.open('http://del.icio.us/post?v=4&amp;noui&amp;jump=close&amp;url=http%3A%2F%2Fcentralino-voip.brunosalzano.com%2Fgtk-porting-asterisk-cti-multipiattaforma%2F&amp;title=GTK+Porting+Asterisk+CTI', 'delicious', 'toolbar=no,width=700,height=400'); return false;"><img src="http://images.del.icio.us/static/img/delicious.small.gif" width="16" height="16" alt="[del.icio.us]" /></a>
<a href="http://www.facebook.com/share.php?u=http%3A%2F%2Fcentralino-voip.brunosalzano.com%2Fgtk-porting-asterisk-cti-multipiattaforma%2F" title="Share on Facebook"><img src="http://www.facebook.com/favicon.ico" width="16" height="16" alt="[Facebook]" /></a>
<a href="http://technorati.com/faves?add=http%3A%2F%2Fcentralino-voip.brunosalzano.com%2Fgtk-porting-asterisk-cti-multipiattaforma%2F" title="Add to my Technorati Favorites"><img src="http://technorati.com/favicon.ico" width="16" height="16" alt="[Technorati]" /></a>
<a href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fcentralino-voip.brunosalzano.com%2Fgtk-porting-asterisk-cti-multipiattaforma%2F&amp;title=GTK+Porting+Asterisk+CTI" title="Save to Google Bookmarks"><img src="http://www.google.com/favicon.ico" width="16" height="16" alt="[Google]" /></a>
<a href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fcentralino-voip.brunosalzano.com%2Fgtk-porting-asterisk-cti-multipiattaforma%2F&amp;title=GTK+Porting+Asterisk+CTI" title="Stumble it!"><img src="http://www.stumbleupon.com/favicon.ico" width="16" height="16" alt="[StumbleUpon]" /></a>
</span>]]></content:encoded>
			<wfw:commentRss>http://centralino-voip.brunosalzano.com/gtk-porting-asterisk-cti-multipiattaforma/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Invoke</title>
		<link>http://centralino-voip.brunosalzano.com/invoke/</link>
		<comments>http://centralino-voip.brunosalzano.com/invoke/#comments</comments>
		<pubDate>Sun, 03 Sep 2006 18:12:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Archivio]]></category>
		<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[c]]></category>

		<guid isPermaLink="false">http://www.brunosalzano.com/?p=3</guid>
		<description><![CDATA[Prima o poi vi capiterà  di sviluppare una applicazione che faccia uso dei Threads per svolgere operazioni in background.
Magari se non avete mai utilizzato i Threads, vi consiglio questo articolo (in inglese) An Introduction to Programming with C# Threads
Il problema dell&#8217;Invoke si presenta nel momento in cui cercate di aggiornare la UI di una [...]]]></description>
			<content:encoded><![CDATA[<p>Prima o poi vi capiterà  di sviluppare una applicazione che faccia uso dei Threads per svolgere operazioni in background.<br />
Magari se non avete mai utilizzato i Threads, vi consiglio questo articolo (in inglese) <a href="http://research.microsoft.com/research/pubs/view.aspx?type=Technical%20Report&amp;id=921" target="_blank">An Introduction to Programming with C# Threads</a></p>
<p>Il problema dell&#8217;Invoke si presenta nel momento in cui cercate di aggiornare la UI di una Form da un thread. Infatti   .NET consente l&#8217;invocazione delle funzioni dell&#8217;oggetto <code>System.Windows.Forms.Control</code> solo dal thread in cui l&#8217;oggetto è stato creato. Per aggirare l&#8217;ostacolo abbiamo bisogno di utilizzare le funzioni <code>Control.Invoke</code> (chiamata sincrona) or <code>Control.BeginInvoke</code> (chiamata asincrona). Normalmente, il nostro approccio sarebbe quello di scrivere tante delegates per quanti sono gli oggetti  da invocare o metodi da aggiornare:<br />
<code> delegate void AggiungiListboxDelegate(string msg);<br />
[...]<br />
if (this.InvokeRequired) {<br />
Invoke(new AggiungiListboxDelegate(AggiungiAListBox), new object[] { itm } );<br />
}<br />
else<br />
{<br />
AggiungiAListBox(itm);<br />
}<br />
</code></p>
<p>Esiste invece un metodo più semplice ed utilizzabile in modo generico nella maggior parte dei casi. Scriviamo delle delegates generiche che ricevono:</p>
<ul>
<li>o l&#8217;oggetto, il nome della property da valorizzare e il nuovo valore da assegnare</li>
<li>o l&#8217;oggetto, il nome del metodo da invocare e i parametri da passare al metodo</li>
</ul>
<p><code> delegate void SetPropertyDelegate(object ctl, string objName, object newValue);<br />
delegate void SetMethodDelegate(object obj, string methodName, object[] parameters);<br />
[...]</code></p>
<p><code> void SetProperty(object ctl, string propName, object newValue) {<br />
Type t = ctl.GetType();<br />
PropertyInfo pi = t.GetProperty(propName);</code></p>
<p>if (pi != null) {<br />
pi.SetValue(ctl,newValue,null);<br />
}<br />
}<br />
void SetMethod(object ctl, string methodName, object[] parameters) {<br />
Type t = ctl.GetType();<br />
MethodInfo mi = t.GetMethod(methodName);</p>
<p>if (mi != null) {<br />
mi.Invoke(ctl, parameters);<br />
}<br />
}<br />
Un esempio di utilizzo:</p>
<p><code>Invoke(new SetPropertyDelegate(SetProperty), new object[] { (object)lblErrMessage, "Text", errmsg });</code></p>
<p><code>oppure</code></p>
<p><code>Invoke(new SetMethodDelegate(SetMethod), new object[] { (object)this, "Close", (new object[] {}) } );</code></p>
<p>A voi l&#8217;onere di migliorare l&#8217;idea <img src='http://centralino-voip.brunosalzano.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>

<span class="slashdigglicious">
<a href="http://slashdot.org/bookmark.pl?url=http%3A%2F%2Fcentralino-voip.brunosalzano.com%2Finvoke%2F&amp;title=Invoke" title="Slashdot It!"><img src="http://slashdot.org/favicon.ico" height="16" width="16" alt="[Slashdot]" /></a>
<a href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fcentralino-voip.brunosalzano.com%2Finvoke%2F&amp;title=Invoke" title="Digg This Story"><img src="http://digg.com/favicon.ico" width="16" height="16" alt="[Digg]" /></a>
<a href="http://reddit.com/submit?url=http%3A%2F%2Fcentralino-voip.brunosalzano.com%2Finvoke%2F&amp;title=Invoke" title="Reddit"><img src="http://reddit.com/favicon.ico" width="16" height="16" alt="[Reddit]" /></a>
<a href="http://del.icio.us/post?url=http%3A%2F%2Fcentralino-voip.brunosalzano.com%2Finvoke%2F&amp;title=Invoke" title="Save to del.icio.us" onclick="window.open('http://del.icio.us/post?v=4&amp;noui&amp;jump=close&amp;url=http%3A%2F%2Fcentralino-voip.brunosalzano.com%2Finvoke%2F&amp;title=Invoke', 'delicious', 'toolbar=no,width=700,height=400'); return false;"><img src="http://images.del.icio.us/static/img/delicious.small.gif" width="16" height="16" alt="[del.icio.us]" /></a>
<a href="http://www.facebook.com/share.php?u=http%3A%2F%2Fcentralino-voip.brunosalzano.com%2Finvoke%2F" title="Share on Facebook"><img src="http://www.facebook.com/favicon.ico" width="16" height="16" alt="[Facebook]" /></a>
<a href="http://technorati.com/faves?add=http%3A%2F%2Fcentralino-voip.brunosalzano.com%2Finvoke%2F" title="Add to my Technorati Favorites"><img src="http://technorati.com/favicon.ico" width="16" height="16" alt="[Technorati]" /></a>
<a href="http://www.google.com/bookmarks/mark?op=edit&amp;output=popup&amp;bkmk=http%3A%2F%2Fcentralino-voip.brunosalzano.com%2Finvoke%2F&amp;title=Invoke" title="Save to Google Bookmarks"><img src="http://www.google.com/favicon.ico" width="16" height="16" alt="[Google]" /></a>
<a href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fcentralino-voip.brunosalzano.com%2Finvoke%2F&amp;title=Invoke" title="Stumble it!"><img src="http://www.stumbleupon.com/favicon.ico" width="16" height="16" alt="[StumbleUpon]" /></a>
</span>]]></content:encoded>
			<wfw:commentRss>http://centralino-voip.brunosalzano.com/invoke/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
