<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://help.openclovis.com/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://help.openclovis.com/index.php?action=history&amp;feed=atom&amp;title=Doc%3Alatest%2Fevalguide%2Fcsa113</id>
		<title>Doc:latest/evalguide/csa113 - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://help.openclovis.com/index.php?action=history&amp;feed=atom&amp;title=Doc%3Alatest%2Fevalguide%2Fcsa113"/>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php?title=Doc:latest/evalguide/csa113&amp;action=history"/>
		<updated>2026-04-25T10:00:26Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.20.2</generator>

	<entry>
		<id>https://help.openclovis.com/index.php?title=Doc:latest/evalguide/csa113&amp;diff=24456&amp;oldid=prev</id>
		<title>Prasad: /* csa213 SA Forum Compliant Event Publication */</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php?title=Doc:latest/evalguide/csa113&amp;diff=24456&amp;oldid=prev"/>
				<updated>2014-11-17T06:39:15Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;csa213 SA Forum Compliant Event Publication&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr style='vertical-align: top;'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 06:39, 17 November 2014&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 182:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 182:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Before building the project,copy the common directory which can be found under&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;lt;code&amp;gt;&amp;lt;eval_dir&amp;gt;/src/app&amp;lt;/code&amp;gt; to the working area&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Before building the project,copy the common directory which can be found under&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;lt;code&amp;gt;&amp;lt;eval_dir&amp;gt;/src/app&amp;lt;/code&amp;gt; to the working area&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160; &amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;# cp -r &amp;lt;eval_dir&amp;gt;/src/app/common&amp;#160; .&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;#160; &amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;# cp -r &amp;lt;eval_dir&amp;gt;/src/app/common&amp;#160; .&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;===csa213 SA Forum Compliant Event Publication===&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;This sample application demonstrates the usage of SA Forum Event Service. As mentioned previously, this sample application does not deviate functionally with csa113. The code differences are due to using SA Forum data types (structures) and APIs , as presented in the following two tables. (Note we have not repeated data types and APIs covered previously.)&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;{| cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;center&amp;quot;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;|+align=&amp;quot;bottom&amp;quot;| '''SA Forum Data Types with the SAFplus Platform equivalent'''&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;|- style=&amp;quot;color:black;background-color:#ffffaa;&amp;quot; align=&amp;quot;center&amp;quot;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;!SA Forum Data Types&amp;#160;  &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;!OpenClovis Data Types&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;|-&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;|SaEvtHandleT&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;|ClEventHandleT&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;|}&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;{| cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;center&amp;quot;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;|+align=&amp;quot;bottom&amp;quot;| '''SA Forum APIs with the SAFplus Platform equivalent'''&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;|- style=&amp;quot;color:black;background-color:#ffffaa;&amp;quot; align=&amp;quot;center&amp;quot;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;!SA Forum APIs&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;!OpenClovis APIs&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;|-&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;|SaEvtEventAllocate&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;|ClEventAllocate&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;|-&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;|saEvtEventAttributesSet&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;|clEventExtAttributesSet&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;|-&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;|saEvtEventPublish&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;|clEventPublish&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;|}&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;===How to Run csa113 and What to Observe===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;===How to Run csa113 and What to Observe===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Prasad</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php?title=Doc:latest/evalguide/csa113&amp;diff=24455&amp;oldid=prev</id>
		<title>Prasad: /* Code */</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php?title=Doc:latest/evalguide/csa113&amp;diff=24455&amp;oldid=prev"/>
				<updated>2014-11-17T06:38:12Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Code&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;a href=&quot;https://help.openclovis.com/index.php?title=Doc:latest/evalguide/csa113&amp;amp;diff=24455&amp;amp;oldid=24179&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Prasad</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php?title=Doc:latest/evalguide/csa113&amp;diff=24179&amp;oldid=prev</id>
		<title>Vnpraveendesu: /* Code */</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php?title=Doc:latest/evalguide/csa113&amp;diff=24179&amp;oldid=prev"/>
				<updated>2013-04-08T09:57:20Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Code&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr style='vertical-align: top;'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 09:57, 8 April 2013&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 179:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 179:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;There's code to call one of a list of generator functions.&amp;#160; The functions on the list, return a pointer and a length which are used to pass to &amp;lt;code&amp;gt;clEventPublish&amp;lt;/code&amp;gt;.&amp;#160; We pass the eventHandle&amp;#160; prepared earlier with &amp;lt;code&amp;gt;clEventAllocate&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;clEventExtAttributesSet&amp;lt;/code&amp;gt;.&amp;#160; Pass the pointer and the length that we get back from the generator function.&amp;#160; Those are used to package up the event data and send it to any subscribers.&amp;#160; We also pass the address of the &amp;lt;code&amp;gt;eventId&amp;lt;/code&amp;gt; local variable.&amp;#160; This is required so that the &amp;lt;code&amp;gt;clEventPublish&amp;lt;/code&amp;gt; function can return the event ID.&amp;#160; We don't need it, so we promptly drop it in the bit bucket.&amp;#160; Finally, we free the data that was allocated in the generator function and passed back as we no longer need it.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;There's code to call one of a list of generator functions.&amp;#160; The functions on the list, return a pointer and a length which are used to pass to &amp;lt;code&amp;gt;clEventPublish&amp;lt;/code&amp;gt;.&amp;#160; We pass the eventHandle&amp;#160; prepared earlier with &amp;lt;code&amp;gt;clEventAllocate&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;clEventExtAttributesSet&amp;lt;/code&amp;gt;.&amp;#160; Pass the pointer and the length that we get back from the generator function.&amp;#160; Those are used to package up the event data and send it to any subscribers.&amp;#160; We also pass the address of the &amp;lt;code&amp;gt;eventId&amp;lt;/code&amp;gt; local variable.&amp;#160; This is required so that the &amp;lt;code&amp;gt;clEventPublish&amp;lt;/code&amp;gt; function can return the event ID.&amp;#160; We don't need it, so we promptly drop it in the bit bucket.&amp;#160; Finally, we free the data that was allocated in the generator function and passed back as we no longer need it.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;'''Note:'''&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Before building the project,copy the common directory which can be found under&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;lt;code&amp;gt;&amp;lt;eval_dir&amp;gt;/src/app&amp;lt;/code&amp;gt; to the working area&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt; &amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;# cp -r &amp;lt;eval_dir&amp;gt;/src/app/common&amp;#160; .&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;===csa213 SA Forum Compliant Event Publication===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;===csa213 SA Forum Compliant Event Publication===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Vnpraveendesu</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php?title=Doc:latest/evalguide/csa113&amp;diff=579&amp;oldid=prev</id>
		<title>Bot: 1 revision</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php?title=Doc:latest/evalguide/csa113&amp;diff=579&amp;oldid=prev"/>
				<updated>2011-10-24T19:02:17Z</updated>
		
		<summary type="html">&lt;p&gt;1 revision&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
			&lt;tr style='vertical-align: top;'&gt;
			&lt;td colspan='1' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='1' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 19:02, 24 October 2011&lt;/td&gt;
			&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Bot</name></author>	</entry>

	<entry>
		<id>https://help.openclovis.com/index.php?title=Doc:latest/evalguide/csa113&amp;diff=578&amp;oldid=prev</id>
		<title>Senthilk at 03:30, 27 August 2010</title>
		<link rel="alternate" type="text/html" href="https://help.openclovis.com/index.php?title=Doc:latest/evalguide/csa113&amp;diff=578&amp;oldid=prev"/>
				<updated>2010-08-27T03:30:00Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==csa113 Event Publication==&lt;br /&gt;
&lt;br /&gt;
===Objective===&lt;br /&gt;
&lt;br /&gt;
The objective is to learn how to write an event publishing application using Clovis' Event Manager API.&lt;br /&gt;
&lt;br /&gt;
===What You Will Learn===&lt;br /&gt;
&lt;br /&gt;
*You will learn how to publish events using Clovis' Event Manager API.&lt;br /&gt;
&lt;br /&gt;
===Code===&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;color:black;background-color:#ffccaa;&amp;quot; align=&amp;quot;center&amp;quot;| clCompAppMain.c&lt;br /&gt;
 |- &lt;br /&gt;
 |&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
    ClRcT&lt;br /&gt;
    clCompAppInitialize(&lt;br /&gt;
        ClUint32T argc,&lt;br /&gt;
        ClCharT *argv[])&lt;br /&gt;
    {&lt;br /&gt;
        ClNameT             appName;&lt;br /&gt;
        ClCpmCallbacksT     callbacks;&lt;br /&gt;
        ClVersionT          version;&lt;br /&gt;
        ClIocPortT          iocPort;&lt;br /&gt;
        ClRcT               rc = CL_OK;&lt;br /&gt;
&lt;br /&gt;
        /*&lt;br /&gt;
         * ---BEGIN_APPLICATION_CODE---&lt;br /&gt;
         */&lt;br /&gt;
        ClVersionT          evtVersion = CL_EVENT_VERSION;&lt;br /&gt;
        ClEventCallbacksT   evtCallbacks = { NULL, NULL };&lt;br /&gt;
&lt;br /&gt;
        /*&lt;br /&gt;
         * ---END_APPLICATION_CODE---&lt;br /&gt;
         */&lt;br /&gt;
        ...&lt;br /&gt;
&lt;br /&gt;
        if ( (rc = clCpmClientInitialize(&amp;amp;cpmHandle, &amp;amp;callbacks, &amp;amp;version)) ) &lt;br /&gt;
            goto errorexit;&lt;br /&gt;
&lt;br /&gt;
        ....&lt;br /&gt;
  &amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
In the &amp;lt;code&amp;gt;clCompAppInitialize&amp;lt;/code&amp;gt; function of this example we again see a call to &amp;lt;code&amp;gt;clEventInitialize&amp;lt;/code&amp;gt;.  Most everything else in the appInitialize function is the same as before in csa112, except that both callback function pointers are specified as &amp;lt;code&amp;gt;NULL&amp;lt;/code&amp;gt;.  This is because we neither open the event channel asynchronously, or subscribe to any events in this application. So there is no need to specify a callback to receive an event.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;color:black;background-color:#ffccaa;&amp;quot; align=&amp;quot;center&amp;quot;| clCompAppMain.c&lt;br /&gt;
 |- &lt;br /&gt;
 |&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
    ClRcT&lt;br /&gt;
    clCompAppInitialize(&lt;br /&gt;
        ClUint32T argc,&lt;br /&gt;
        ClCharT *argv[])&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        ...&lt;br /&gt;
&lt;br /&gt;
        // Open an event chanel so that we can subscribe to events on that channel&lt;br /&gt;
        rc = clEventChannelOpen(evtHandle,&lt;br /&gt;
                &amp;amp;evtChannelName,&lt;br /&gt;
                (CL_EVENT_CHANNEL_PUBLISHER |&lt;br /&gt;
                 CL_EVENT_GLOBAL_CHANNEL |&lt;br /&gt;
                 CL_EVENT_CHANNEL_CREATE),&lt;br /&gt;
                (ClTimeT)CL_RMD_TIMEOUT_FOREVER,&lt;br /&gt;
                &amp;amp;evtChannelHandle);&lt;br /&gt;
  &amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
Here we open the event channel.  This is the same as in csa112 except that rather than opening as a SUBSCRIBER, we open as a &amp;lt;code&amp;gt;PUBLISHER&amp;lt;/code&amp;gt; (by specifying &amp;lt;code&amp;gt;CL_EVENT_CHANNEL_PUBLISHER&amp;lt;/code&amp;gt; flag)&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;color:black;background-color:#ffccaa;&amp;quot; align=&amp;quot;center&amp;quot;| clCompAppMain.c&lt;br /&gt;
 |- &lt;br /&gt;
 |&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
    ClRcT&lt;br /&gt;
    clCompAppInitialize(&lt;br /&gt;
        ClUint32T argc,&lt;br /&gt;
        ClCharT *argv[])&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        ...&lt;br /&gt;
&lt;br /&gt;
        rc = clEventAllocate(evtChannelHandle, &amp;amp;eventHandle);&lt;br /&gt;
        if (rc != CL_OK)&lt;br /&gt;
        {&lt;br /&gt;
            clprintf(CL_LOG_SEV_ERROR, &amp;quot;Failed to allocate event [0x%x]&amp;quot;,&lt;br /&gt;
                    rc);&lt;br /&gt;
            return rc;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        rc = clEventExtAttributesSet(eventHandle,&lt;br /&gt;
                EVENT_TYPE,&lt;br /&gt;
                1,&lt;br /&gt;
                0,&lt;br /&gt;
                &amp;amp;publisherName);&lt;br /&gt;
        if (rc != CL_OK)&lt;br /&gt;
        {&lt;br /&gt;
            clprintf(CL_LOG_SEV_ERROR, &amp;quot;Failed to set event attributes [0x%x]&amp;quot;,&lt;br /&gt;
                    rc);&lt;br /&gt;
            return rc;&lt;br /&gt;
        }&lt;br /&gt;
  &amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
The call to &amp;lt;code&amp;gt;clEventAllocate&amp;lt;/code&amp;gt; allocates an event header.  This header is identified by the event handle passed back to &amp;lt;code&amp;gt;gTestInfo.eventHandle&amp;lt;/code&amp;gt;.  The handle should be used any time the event header is to be used to manipulate the header, either by using &amp;lt;code&amp;gt;clEventExtAttributesSet&amp;lt;/code&amp;gt; (right below), or to send an event using the header as in &amp;lt;code&amp;gt;clEventPublish&amp;lt;/code&amp;gt;.  The call to &amp;lt;code&amp;gt;clEventExtAttributesSet&amp;lt;/code&amp;gt; defines the &amp;lt;code&amp;gt;EVENT_TYPE&amp;lt;/code&amp;gt; which is defined as 5432 in &amp;lt;code&amp;gt;common/common.h&amp;lt;/code&amp;gt; and is used in the event subscriber.  It also defines the priority to be 1 which is just below the highest priority of &amp;lt;code&amp;gt;CL_EVENT_HIGHEST_PRIORITY&amp;lt;/code&amp;gt; which is defined as 0 where &amp;lt;code&amp;gt;CL_EVENT_LOWEST_PRIORITY&amp;lt;/code&amp;gt; is defined as 3.  The retention time is specified as 0 since we don't want the event to be kept around if there is no subscriber to pick it up.  Finally the &amp;lt;code&amp;gt;publisherName&amp;lt;/code&amp;gt; is specified because it's required.  Our subscriber doesn't care who publishes the events it receives.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;color:black;background-color:#ffccaa;&amp;quot; align=&amp;quot;center&amp;quot;| clCompAppMain.c&lt;br /&gt;
 |- &lt;br /&gt;
 |&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
    ClRcT&lt;br /&gt;
    clCompAppInitialize(&lt;br /&gt;
        ClUint32T argc,&lt;br /&gt;
        ClCharT *argv[])&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        ...&lt;br /&gt;
&lt;br /&gt;
        while (!exiting)&lt;br /&gt;
        {&lt;br /&gt;
            if (running &amp;amp;&amp;amp; ha_state == CL_AMS_HA_STATE_ACTIVE)&lt;br /&gt;
            {&lt;br /&gt;
                csa113Comp_PublishEvent();&lt;br /&gt;
            }&lt;br /&gt;
            sleep(1);&lt;br /&gt;
        }&lt;br /&gt;
  &amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
Here is the main loop.  As long as the application is running and active we make a call to &amp;lt;code&amp;gt;csa113Comp_PublishEvent&amp;lt;/code&amp;gt;.  The work of the application takes place in &amp;lt;code&amp;gt;csa113Comp_PublishEvent&amp;lt;/code&amp;gt;, which is presented below.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;color:black;background-color:#ffccaa;&amp;quot; align=&amp;quot;center&amp;quot;| clCompAppMain.c&lt;br /&gt;
 |- &lt;br /&gt;
 |&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
    static ClRcT&lt;br /&gt;
    csa113Comp_PublishEvent()&lt;br /&gt;
    {&lt;br /&gt;
        ClRcT           rc              = CL_OK;&lt;br /&gt;
        ClEventIdT      eventId         = 0;&lt;br /&gt;
        static int      index           = 0;&lt;br /&gt;
        ClSizeT         data_len        = 0;&lt;br /&gt;
        char            *data           = 0;&lt;br /&gt;
        typedef void (*Generator)(char **, ClSizeT*);&lt;br /&gt;
    &lt;br /&gt;
        //&lt;br /&gt;
        // Note: to add a new generator, just define it above and then include&lt;br /&gt;
        // the new functions name in the generators list.&lt;br /&gt;
        // Next, maybe something that gets disk free info by way of getfsent&lt;br /&gt;
        // and statfs?&lt;br /&gt;
        static Generator generators[]   =&lt;br /&gt;
        { &lt;br /&gt;
            generate_time_of_day,&lt;br /&gt;
            generate_load_average&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
        //&lt;br /&gt;
        // every time through increment index and then set index to&lt;br /&gt;
        // it's value modulo the number of entries in the generators&lt;br /&gt;
        // array.  This will cause us to cycle through the list of&lt;br /&gt;
        // generators as we're called to publish events.&lt;br /&gt;
        (*generators[index++])(&amp;amp;data, &amp;amp;data_len);&lt;br /&gt;
        index %= (int)(sizeof generators / sizeof generators[0]);&lt;br /&gt;
        if (data == 0 || data_len == 0)&lt;br /&gt;
        {&lt;br /&gt;
            clprintf(CL_LOG_SEV_ERROR, &amp;quot;no event data generated&amp;quot;);&lt;br /&gt;
            return CL_ERR_NO_MEMORY;&lt;br /&gt;
        }&lt;br /&gt;
        clprintf(CL_LOG_SEV_NOTICE,&amp;quot;Publishing Event: %.*s&amp;quot;, (int)data_len, data);&lt;br /&gt;
        rc = clEventPublish(eventHandle, data, data_len, &amp;amp;eventId);&lt;br /&gt;
        clHeapFree(data);&lt;br /&gt;
&lt;br /&gt;
        return CL_OK;&lt;br /&gt;
    }&lt;br /&gt;
  &amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
There's code to call one of a list of generator functions.  The functions on the list, return a pointer and a length which are used to pass to &amp;lt;code&amp;gt;clEventPublish&amp;lt;/code&amp;gt;.  We pass the eventHandle  prepared earlier with &amp;lt;code&amp;gt;clEventAllocate&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;clEventExtAttributesSet&amp;lt;/code&amp;gt;.  Pass the pointer and the length that we get back from the generator function.  Those are used to package up the event data and send it to any subscribers.  We also pass the address of the &amp;lt;code&amp;gt;eventId&amp;lt;/code&amp;gt; local variable.  This is required so that the &amp;lt;code&amp;gt;clEventPublish&amp;lt;/code&amp;gt; function can return the event ID.  We don't need it, so we promptly drop it in the bit bucket.  Finally, we free the data that was allocated in the generator function and passed back as we no longer need it.&lt;br /&gt;
&lt;br /&gt;
===csa213 SA Forum Compliant Event Publication===&lt;br /&gt;
&lt;br /&gt;
This sample application demonstrates the usage of SA Forum Event Service. As mentioned previously, this sample application does not deviate functionally with csa113. The code differences are due to using SA Forum data types (structures) and APIs , as presented in the following two tables. (Note we have not repeated data types and APIs covered previously.)&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
|+align=&amp;quot;bottom&amp;quot;| '''SA Forum Data Types with the SAFplus Platform equivalent'''&lt;br /&gt;
|- style=&amp;quot;color:black;background-color:#ffffaa;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
!SA Forum Data Types   &lt;br /&gt;
!OpenClovis Data Types&lt;br /&gt;
|-&lt;br /&gt;
|SaEvtHandleT&lt;br /&gt;
|ClEventHandleT&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; border=&amp;quot;1&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
|+align=&amp;quot;bottom&amp;quot;| '''SA Forum APIs with the SAFplus Platform equivalent'''&lt;br /&gt;
|- style=&amp;quot;color:black;background-color:#ffffaa;&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
!SA Forum APIs&lt;br /&gt;
!OpenClovis APIs&lt;br /&gt;
|-&lt;br /&gt;
|SaEvtEventAllocate&lt;br /&gt;
|ClEventAllocate&lt;br /&gt;
|-&lt;br /&gt;
|saEvtEventAttributesSet&lt;br /&gt;
|clEventExtAttributesSet&lt;br /&gt;
|-&lt;br /&gt;
|saEvtEventPublish&lt;br /&gt;
|clEventPublish&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===How to Run csa113 and What to Observe===&lt;br /&gt;
&lt;br /&gt;
In csa113 you will be observing an event publishing application. This will be far more interesting if you observe an event subscription application at the same time. For this we will use the example from csa112.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;First you should start up csa112 and put it in a LockAssignment state so that it can receive events.(Unlock csa212SGI0 instead of csa112SGI0 to run csa213).&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
 # cd /root/asp/bin&lt;br /&gt;
 # ./asp_console&lt;br /&gt;
&lt;br /&gt;
cli[Test]-&amp;gt; setc 1&lt;br /&gt;
cli[Test:SCNodeI0]-&amp;gt; setc cpm&lt;br /&gt;
cli[Test:SCNodeI0:CPM]-&amp;gt; amsLockAssignment sg csa112SGI0&lt;br /&gt;
cli[Test:SCNodeI0:CPM]-&amp;gt; amsUnlock sg csa112SGI0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the csa112 application log you should see:&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;color:black;background-color:#ffffaa;&amp;quot; align=&amp;quot;center&amp;quot;| $ /root/asp/var/log/csa112CompI0Log.latest &lt;br /&gt;
 |- &lt;br /&gt;
 |&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
Mon Jul 14 22:50:34 2008   (SCNodeI0.24830 : csa112CompEO.---.---.00037 :   INFO)&lt;br /&gt;
 csa112: Instantiated as component instance csa112CompI0.&lt;br /&gt;
Mon Jul 14 22:50:34 2008   (SCNodeI0.24830 : csa112CompEO.---.---.00038 :   INFO)&lt;br /&gt;
 csa112CompI0: Waiting for CSI assignment...&lt;br /&gt;
Mon Jul 14 22:51:20 2008   (SCNodeI0.24830 : csa112CompEO.---.---.00041 :   INFO)&lt;br /&gt;
 Component [csa112CompI0] : PID [24830]. CSI Set Received&lt;br /&gt;
Mon Jul 14 22:51:20 2008   (SCNodeI0.24830 : csa112CompEO.---.---.00042 :   INFO)&lt;br /&gt;
    CSI Flags               : [Add One]&lt;br /&gt;
Mon Jul 14 22:51:20 2008   (SCNodeI0.24830 : csa112CompEO.---.---.00043 :   INFO)&lt;br /&gt;
    CSI Name                : [csa112CSII0]&lt;br /&gt;
Mon Jul 14 22:51:20 2008   (SCNodeI0.24830 : csa112CompEO.---.---.00044 :   INFO)&lt;br /&gt;
    Name Value Pairs        :&lt;br /&gt;
Mon Jul 14 22:51:20 2008   (SCNodeI0.24830 : csa112CompEO.---.---.00045 :   INFO)&lt;br /&gt;
    HA State                : [Active]&lt;br /&gt;
Mon Jul 14 22:51:20 2008   (SCNodeI0.24830 : csa112CompEO.---.---.00046 :   INFO)&lt;br /&gt;
    Active Descriptor       :&lt;br /&gt;
Mon Jul 14 22:51:20 2008   (SCNodeI0.24830 : csa112CompEO.---.---.00047 :   INFO)&lt;br /&gt;
      Transition Descriptor : [1]&lt;br /&gt;
Mon Jul 14 22:51:20 2008   (SCNodeI0.24830 : csa112CompEO.---.---.00048 :   INFO)&lt;br /&gt;
        Active Component    : [csa112CompI0]&lt;br /&gt;
Mon Jul 14 22:51:20 2008   (SCNodeI0.24830 : csa112CompEO.---.---.00049 :   INFO)&lt;br /&gt;
 csa112: ACTIVE state requested; activating service&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|} &lt;br /&gt;
[[File:OpenClovis_Note.png]]When running model csa212 you will not see the output described above for the the amsLockAssignment and amsUnlock commands. Unlock csa212SGI0 instead of csa112SGI0.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Now you can start up the event publishing application and put it in a LockAssignment state. (Unlock csa213SGI0 instead of csa113SGI0 to run csa213).&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
cli[Test:SCNodeI0:CPM]-&amp;gt; amsLockAssignment sg csa113SGI0&lt;br /&gt;
cli[Test:SCNodeI0:CPM]-&amp;gt; amsUnlock sg csa113SGI0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Putting csa113 into a LockAssignment state caused it to begin publishing events. Using &amp;lt;code&amp;gt;tail -f /root/asp/var/log/csa113CompI0Log.latest&amp;lt;/code&amp;gt; on the csa113 application log you can see the events being published.(Unlock csa213SGI0 instead of csa113SGI0 to run SAF version).&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;color:black;background-color:#ffffaa;&amp;quot; align=&amp;quot;center&amp;quot;| $ /root/asp/var/log/csa113CompI0Log.latest &lt;br /&gt;
 |- &lt;br /&gt;
 |&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
Mon Jul 14 22:53:54 2008   (SCNodeI0.24890 : csa113CompEO.---.---.00028 :   INFO)&lt;br /&gt;
 Component [csa113CompI0] : PID [24890]. Initializing&lt;br /&gt;
Mon Jul 14 22:53:54 2008   (SCNodeI0.24890 : csa113CompEO.---.---.00029 :   INFO)&lt;br /&gt;
    IOC Address             : 0x1&lt;br /&gt;
Mon Jul 14 22:53:54 2008   (SCNodeI0.24890 : csa113CompEO.---.---.00030 :   INFO)&lt;br /&gt;
    IOC Port                : 0x81&lt;br /&gt;
Mon Jul 14 22:53:54 2008   (SCNodeI0.24890 : csa113CompEO.---.---.00037 :   INFO)&lt;br /&gt;
 Instantiated as component instance csa113CompI0.&lt;br /&gt;
Mon Jul 14 22:53:54 2008   (SCNodeI0.24890 : csa113CompEO.---.---.00038 :   INFO)&lt;br /&gt;
 csa113CompI0: Waiting for CSI assignment...&lt;br /&gt;
Mon Jul 14 22:53:59 2008   (SCNodeI0.24890 : csa113CompEO.---.---.00041 :   INFO)&lt;br /&gt;
 Component [csa113CompI0] : PID [24890]. CSI Set Received&lt;br /&gt;
Mon Jul 14 22:53:59 2008   (SCNodeI0.24890 : csa113CompEO.---.---.00042 :   INFO)&lt;br /&gt;
    CSI Flags               : [Add One]&lt;br /&gt;
Mon Jul 14 22:53:59 2008   (SCNodeI0.24890 : csa113CompEO.---.---.00043 :   INFO)&lt;br /&gt;
    CSI Name                : [csa113CSII0]&lt;br /&gt;
Mon Jul 14 22:53:59 2008   (SCNodeI0.24890 : csa113CompEO.---.---.00044 :   INFO)&lt;br /&gt;
    Name Value Pairs        :&lt;br /&gt;
Mon Jul 14 22:53:59 2008   (SCNodeI0.24890 : csa113CompEO.---.---.00045 :   INFO)&lt;br /&gt;
    HA State                : [Active]&lt;br /&gt;
Mon Jul 14 22:53:59 2008   (SCNodeI0.24890 : csa113CompEO.---.---.00046 :   INFO)&lt;br /&gt;
    Active Descriptor       :&lt;br /&gt;
Mon Jul 14 22:53:59 2008   (SCNodeI0.24890 : csa113CompEO.---.---.00047 :   INFO)&lt;br /&gt;
      Transition Descriptor : [1]&lt;br /&gt;
Mon Jul 14 22:53:59 2008   (SCNodeI0.24890 : csa113CompEO.---.---.00048 :   INFO)&lt;br /&gt;
        Active Component    : [csa113CompI0]&lt;br /&gt;
Mon Jul 14 22:53:59 2008   (SCNodeI0.24890 : csa113CompEO.---.---.00049 :   INFO)&lt;br /&gt;
 csa113: ACTIVE state requested; activating service&lt;br /&gt;
Mon Jul 14 22:53:59 2008   (SCNodeI0.24890 : csa113CompEO.---.---.00050 : NOTICE)&lt;br /&gt;
 Publishing Event: Mon Jul 14 22:53:59 2008&lt;br /&gt;
Mon Jul 14 22:54:00 2008   (SCNodeI0.24890 : csa113CompEO.---.---.00052 : NOTICE)&lt;br /&gt;
 Publishing Event: 0.05 0.07 0.03&lt;br /&gt;
Mon Jul 14 22:54:01 2008   (SCNodeI0.24890 : csa113CompEO.---.---.00054 : NOTICE)&lt;br /&gt;
 Publishing Event: Mon Jul 14 22:54:01 2008&lt;br /&gt;
Mon Jul 14 22:54:02 2008   (SCNodeI0.24890 : csa113CompEO.---.---.00056 : NOTICE)&lt;br /&gt;
 Publishing Event: 0.05 0.07 0.03&lt;br /&gt;
Mon Jul 14 22:54:03 2008   (SCNodeI0.24890 : csa113CompEO.---.---.00058 : NOTICE)&lt;br /&gt;
 Publishing Event: Mon Jul 14 22:54:03 2008&lt;br /&gt;
Mon Jul 14 22:54:04 2008   (SCNodeI0.24890 : csa113CompEO.---.---.00060 : NOTICE)&lt;br /&gt;
 Publishing Event: 0.05 0.07 0.03&lt;br /&gt;
  &amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
Since the event subscriber application is also running you can see the events that it is receiving in the csa112 application log file. Again using &amp;lt;code&amp;gt;tail -f /rootasp//var/log/csa112CompI0Log.latest&amp;lt;/code&amp;gt; you can see the following:&lt;br /&gt;
{| cellspacing=&amp;quot;0&amp;quot; cellpadding = &amp;quot;0&amp;quot; border=&amp;quot;0&amp;quot; align = &amp;quot;center&amp;quot; width=&amp;quot;680&amp;quot;&lt;br /&gt;
 ! style=&amp;quot;color:black;background-color:#ffffaa;&amp;quot; align=&amp;quot;center&amp;quot;| /root/asp/var/log/csa112CompI0Log.latest&lt;br /&gt;
 |- &lt;br /&gt;
 |&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
Mon Jul 14 22:53:59 2008   (SCNodeI0.24830 : csa112CompEO.---.---.00052 : NOTICE)&lt;br /&gt;
 We've got an event to receive&lt;br /&gt;
Mon Jul 14 22:53:59 2008   (SCNodeI0.24830 : csa112CompEO.---.---.00054 : NOTICE)&lt;br /&gt;
 received event: Mon Jul 14 22:53:59 2008&lt;br /&gt;
Mon Jul 14 22:54:00 2008   (SCNodeI0.24830 : csa112CompEO.---.---.00058 : NOTICE)&lt;br /&gt;
 We've got an event to receive&lt;br /&gt;
Mon Jul 14 22:54:00 2008   (SCNodeI0.24830 : csa112CompEO.---.---.00060 : NOTICE)&lt;br /&gt;
 received event: 0.05 0.07 0.03&lt;br /&gt;
Mon Jul 14 22:54:01 2008   (SCNodeI0.24830 : csa112CompEO.---.---.00064 : NOTICE)&lt;br /&gt;
 We've got an event to receive&lt;br /&gt;
Mon Jul 14 22:54:01 2008   (SCNodeI0.24830 : csa112CompEO.---.---.00066 : NOTICE)&lt;br /&gt;
 received event: Mon Jul 14 22:54:01 2008&lt;br /&gt;
Mon Jul 14 22:54:02 2008   (SCNodeI0.24830 : csa112CompEO.---.---.00070 : NOTICE)&lt;br /&gt;
 We've got an event to receive&lt;br /&gt;
Mon Jul 14 22:54:02 2008   (SCNodeI0.24830 : csa112CompEO.---.---.00072 : NOTICE)&lt;br /&gt;
 received event: 0.05 0.07 0.03&lt;br /&gt;
  &amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Now you can shut everything down in the usual manner. Note that you will be shutting down two service groups.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
cli[Test:SCNodeI0:CPM]-&amp;gt; amsLockAssignment sg csa113SGI0&lt;br /&gt;
cli[Test:SCNodeI0:CPM]-&amp;gt; amsLockAssignment sg csa112SGI0&lt;br /&gt;
cli[Test:SCNodeI0:CPM]-&amp;gt; amsLockInstantiation sg csa113SGI0&lt;br /&gt;
cli[Test:SCNodeI0:CPM]-&amp;gt; amsLockInstantiation sg csa112SGI0&lt;br /&gt;
cli[Test:SCNodeI0:CPM]-&amp;gt; end&lt;br /&gt;
cli[Test:SCNodeI0]-&amp;gt; end&lt;br /&gt;
cli[Test]-&amp;gt; bye&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Summary and References===&lt;br /&gt;
&lt;br /&gt;
We've seen how to initialize the event manager subsystem as an event publisher.  We've seen:&lt;br /&gt;
*events flow from the event publisher to the subscriber.  &lt;br /&gt;
*how to format events and send them through the event manager subsystem&lt;br /&gt;
*For further reading, check the same sources as listed under the csa112 section.&lt;/div&gt;</summary>
		<author><name>Senthilk</name></author>	</entry>

	</feed>