<?xml version="1.0" encoding="windows-1251"?>
<rss version="0.92">
<channel>
<title>Sw4me - Winserv/Tcl</title>
<link>http://www.sw4me.com/wiki/Winserv/Tcl</link>
<description>History/revisions of Sw4me/Winserv/Tcl</description>
<language>en-us</language>
<item>
<title>2005-03-16 21:21:46</title>
<link>http://www.sw4me.com/wiki/Winserv/Tcl/show?time=2005-03-16+21%3A21%3A46</link>
<description>&lt;a name="p29-1">&lt;/a>&lt;p class="auto" id="p29-1">If&amp;nbsp;you are&amp;nbsp;a&amp;nbsp;TCL programmer, you&amp;nbsp;may get&amp;nbsp;the following advantages by&amp;nbsp;porting your server application to&amp;nbsp;Winserv:&lt;/p>&lt;ul>&lt;li>&lt;ul>&lt;li> Using &lt;a href="http://wiki.tcl.tk/tclkit" target="_blank" title="" class="outerlink">tclkit&lt;/a> or&amp;nbsp;&lt;a href="http://wiki.tcl.tk/freewrap" target="_blank" title="" class="outerlink">freewrap&lt;/a> for&amp;nbsp;easy deployment becomes possible. With &lt;a href="http://wiki.tcl.tk/tclsvc" target="_blank" title="" class="outerlink">tclsvc&lt;/a> it&amp;nbsp;used to&amp;nbsp;be a&amp;nbsp;problem, and&amp;nbsp;you had&amp;nbsp;to&amp;nbsp;choose between the&amp;nbsp;ease of&amp;nbsp;deployment and&amp;nbsp;the possibility to&amp;nbsp;run as&amp;nbsp;NT service.
&lt;/li>&lt;li> Winserv will help you&amp;nbsp;to&amp;nbsp;implement a&amp;nbsp;Tk dialog to&amp;nbsp;manage your service. With &lt;a href="http://wiki.tcl.tk/tclsvc" target="_blank" title="" class="outerlink">tclsvc&lt;/a> you&amp;nbsp;had to&amp;nbsp;use some other utilities or&amp;nbsp;libraries to&amp;nbsp;control your service. Now&amp;nbsp;you can&amp;nbsp;use Winserv both as&amp;nbsp;a service starter and&amp;nbsp;a&amp;nbsp;&lt;span class="nobr">service-controlling&lt;/span> backend.
&lt;/li>&lt;li>  Winserv will let&amp;nbsp;you to&amp;nbsp;add support for&amp;nbsp;&lt;em>paused&lt;/em> service state and&amp;nbsp;for &lt;span class="nobr">user-defined&lt;/span> signals to&amp;nbsp;your server application. There was&amp;nbsp;no&amp;nbsp;way to&amp;nbsp;get this working with &lt;a href="http://wiki.tcl.tk/tclsvc" target="_blank" title="" class="outerlink">tclsvc&lt;/a>, firedaemon, srvany and&amp;nbsp;other similar tools.&lt;/li>&lt;/ul>&lt;/li>&lt;/ul>
&lt;br />&lt;a name="p29-2">&lt;/a>&lt;p class="auto" id="p29-2">
Porting &lt;a href="http://wiki.tcl.tk/tcsvc" target="_blank" title="" class="outerlink">tclsvc&lt;/a>-based applications to&amp;nbsp;winserv is&amp;nbsp;easy. You&amp;nbsp;should install a&amp;nbsp;winserv support package at&amp;nbsp;a place where your interpreter can&amp;nbsp;find it, and&amp;nbsp;then add&amp;nbsp;two lines of&amp;nbsp;code at&amp;nbsp;the beginning of&amp;nbsp;your script:&lt;br />
&lt;!--notypo-->&lt;textarea class="code" rows="3" readonly="readonly">package require winserv
winserv::startup&lt;/textarea>&lt;!--/notypo-->&lt;br />
Note that it&amp;nbsp;won't prevent your script from being run&amp;nbsp;by&amp;nbsp;[tclsvc]: winserv support package checks &lt;span class="cite">tcl_service&lt;/span> global varible and&amp;nbsp;doesn't try&amp;nbsp;to&amp;nbsp;connect winserv if&amp;nbsp;the variable already exists.&lt;/p>&lt;br />&lt;a name="p29-3">&lt;/a>&lt;p class="auto" id="p29-3">
When running under winserv, &lt;span class="cite">winserv::startup&lt;/span> command sets the&amp;nbsp;&lt;span class="cite">tcl_service&lt;/span> and&amp;nbsp;&lt;span class="cite">tcl_service_winserv&lt;/span> global variables to&amp;nbsp;1. It&amp;nbsp;imports &lt;span class="cite">eventlog&lt;/span> command into the&amp;nbsp;global namespace. This command is&amp;nbsp;a &lt;span class="nobr">mostly-compatible&lt;/span> (though less powerful) replacement for&amp;nbsp;the tclsvc's eventlog. It&amp;nbsp;doesn't open the&amp;nbsp;eventlog directly; instead, it&amp;nbsp;uses the&amp;nbsp;active IPC&amp;nbsp;method to&lt;br />
pass messages to&amp;nbsp;winserv.&lt;/p>&lt;br />&lt;a name="p29-4">&lt;/a>&lt;p class="auto" id="p29-4">
A&amp;nbsp;lot of&amp;nbsp;&lt;span class="nobr">winserv-specific&lt;/span> facilities become available after winserv::startup.&lt;br />
&lt;!--notypo-->&lt;textarea class="code" rows="2" readonly="readonly">winserv::accept ?[-]pause? ?[-]paramchange? ?[-]shutdown? ...&lt;/textarea>&lt;!--/notypo-->&lt;br />
This command lets the&amp;nbsp;application accept certain SCM&amp;nbsp;control code groups.If the&amp;nbsp;dash precedes the&amp;nbsp;group name, it&amp;nbsp;means that this group is&amp;nbsp;not accepted any&amp;nbsp;more.&lt;br />
&lt;!--notypo-->&lt;textarea class="code" rows="2" readonly="readonly">winserv::accept reset&lt;/textarea>&lt;!--/notypo-->&lt;br />
Use&amp;nbsp;it&amp;nbsp;to accept only the&amp;nbsp;STOP code, as&amp;nbsp;winserv does by&amp;nbsp;default.&lt;br />
&lt;!--notypo-->&lt;textarea class="code" rows="2" readonly="readonly">winserv::handle code script&lt;/textarea>&lt;!--/notypo-->&lt;br />
This command defines a&amp;nbsp;script to&amp;nbsp;handle particular SCM&amp;nbsp;control code (STOP, PAUSE, CONTINUE, PARAMCHANGE, NETBINDADD, NETBINDREMOVE, NETBINDDISABLE, NETBINDENABLE, as&amp;nbsp;well as&amp;nbsp;&lt;span class="nobr">user-defined&lt;/span> codes CODE128..CODE255).&lt;/p>&lt;br />&lt;a name="p29-5">&lt;/a>&lt;p class="auto" id="p29-5">
For&amp;nbsp;PAUSE and&amp;nbsp;CONTINUE control codes the&amp;nbsp;script can&amp;nbsp;break or&amp;nbsp;throw an&amp;nbsp;error to&amp;nbsp;indicate that the&amp;nbsp;service status wasn't really changed (so it&amp;nbsp;must leave running or&amp;nbsp;paused, respectively).&lt;/p>&lt;br />&lt;a name="p29-6">&lt;/a>&lt;p class="auto" id="p29-6">
Use&amp;nbsp;empty script argument to&amp;nbsp;remove the&amp;nbsp;handler.&lt;/p> </description>
</item>
<item>
<title>2004-11-07 02:06:16</title>
<link>http://www.sw4me.com/wiki/Winserv/Tcl/show?time=2004-11-07+02%3A06%3A16</link>
<description>edited by AntonKovalenko</description>
</item>
<item>
<title>2004-11-06 18:57:34</title>
<link>http://www.sw4me.com/wiki/Winserv/Tcl/show?time=2004-11-06+18%3A57%3A34</link>
<description>edited by AntonKovalenko</description>
</item>
</channel>
</rss>

