blob: 97f7e9d4fea904478fd54b13990858df505b0da5 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="generator" content="Asciidoctor 2.0.15">
<link rel="icon" type="image/png" href="/favicon.png">
<title>Eclipse CommaSuite</title>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700">
<style>
/* Asciidoctor default stylesheet | MIT License | https://asciidoctor.org */
/* Uncomment @import statement to use as custom stylesheet */
/*@import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700";*/
article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}
audio,video{display:inline-block}
audio:not([controls]){display:none;height:0}
html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}
a{background:none}
a:focus{outline:thin dotted}
a:active,a:hover{outline:0}
h1{font-size:2em;margin:.67em 0}
abbr[title]{border-bottom:1px dotted}
b,strong{font-weight:bold}
dfn{font-style:italic}
hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}
mark{background:#ff0;color:#000}
code,kbd,pre,samp{font-family:monospace;font-size:1em}
pre{white-space:pre-wrap}
q{quotes:"\201C" "\201D" "\2018" "\2019"}
small{font-size:80%}
sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
sup{top:-.5em}
sub{bottom:-.25em}
img{border:0}
svg:not(:root){overflow:hidden}
figure{margin:0}
fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}
legend{border:0;padding:0}
button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}
button,input{line-height:normal}
button,select{text-transform:none}
button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}
button[disabled],html input[disabled]{cursor:default}
input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}
button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}
textarea{overflow:auto;vertical-align:top}
table{border-collapse:collapse;border-spacing:0}
*,*::before,*::after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}
html,body{font-size:100%}
body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto;tab-size:4;word-wrap:anywhere;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
a:hover{cursor:pointer}
img,object,embed{max-width:100%;height:auto}
object,embed{height:100%}
img{-ms-interpolation-mode:bicubic}
.left{float:left!important}
.right{float:right!important}
.text-left{text-align:left!important}
.text-right{text-align:right!important}
.text-center{text-align:center!important}
.text-justify{text-align:justify!important}
.hide{display:none}
img,object,svg{display:inline-block;vertical-align:middle}
textarea{height:auto;min-height:50px}
select{width:100%}
.subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em}
div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0}
a{color:#2156a5;text-decoration:underline;line-height:inherit}
a:hover,a:focus{color:#1d4b8f}
a img{border:0}
p{font-family:inherit;font-weight:400;font-size:1em;line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility}
p aside{font-size:.875em;line-height:1.35;font-style:italic}
h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:#ba3925;text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em;line-height:1.0125em}
h1 small,h2 small,h3 small,#toctitle small,.sidebarblock>.content>.title small,h4 small,h5 small,h6 small{font-size:60%;color:#e99b8f;line-height:0}
h1{font-size:2.125em}
h2{font-size:1.6875em}
h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em}
h4,h5{font-size:1.125em}
h6{font-size:1em}
hr{border:solid #dddddf;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em;height:0}
em,i{font-style:italic;line-height:inherit}
strong,b{font-weight:bold;line-height:inherit}
small{font-size:60%;line-height:inherit}
code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)}
ul,ol,dl{font-size:1em;line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit}
ul,ol{margin-left:1.5em}
ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0;font-size:1em}
ul.square li ul,ul.circle li ul,ul.disc li ul{list-style:inherit}
ul.square{list-style-type:square}
ul.circle{list-style-type:circle}
ul.disc{list-style-type:disc}
ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0}
dl dt{margin-bottom:.3125em;font-weight:bold}
dl dd{margin-bottom:1.25em}
abbr,acronym{text-transform:uppercase;font-size:90%;color:rgba(0,0,0,.8);border-bottom:1px dotted #ddd;cursor:help}
abbr{text-transform:none}
blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
@media screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
h1{font-size:2.75em}
h2{font-size:2.3125em}
h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
h4{font-size:1.4375em}}
table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede;word-wrap:normal}
table thead,table tfoot{background:#f7f8f7}
table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left}
table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
table tr.even,table tr.alt{background:#f8f8f7}
table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{line-height:1.6}
h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
.center{margin-left:auto;margin-right:auto}
.stretch{width:100%}
.clearfix::before,.clearfix::after,.float-group::before,.float-group::after{content:" ";display:table}
.clearfix::after,.float-group::after{clear:both}
:not(pre).nobreak{word-wrap:normal}
:not(pre).nowrap{white-space:nowrap}
:not(pre).pre-wrap{white-space:pre-wrap}
:not(pre):not([class^=L])>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed}
pre{color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;line-height:1.45;text-rendering:optimizeSpeed}
pre code,pre pre{color:inherit;font-size:inherit;line-height:inherit}
pre>code{display:block}
pre.nowrap,pre.nowrap pre{white-space:pre;word-wrap:normal}
em em{font-style:normal}
strong strong{font-weight:400}
.keyseq{color:rgba(51,51,51,.8)}
kbd{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;display:inline-block;color:rgba(0,0,0,.8);font-size:.65em;line-height:1.45;background:#f7f7f7;border:1px solid #ccc;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em white inset;box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em #fff inset;margin:0 .15em;padding:.2em .5em;vertical-align:middle;position:relative;top:-.1em;white-space:nowrap}
.keyseq kbd:first-child{margin-left:0}
.keyseq kbd:last-child{margin-right:0}
.menuseq,.menuref{color:#000}
.menuseq b:not(.caret),.menuref{font-weight:inherit}
.menuseq{word-spacing:-.02em}
.menuseq b.caret{font-size:1.25em;line-height:.8}
.menuseq i.caret{font-weight:bold;text-align:center;width:.45em}
b.button::before,b.button::after{position:relative;top:-1px;font-weight:400}
b.button::before{content:"[";padding:0 3px 0 2px}
b.button::after{content:"]";padding:0 2px 0 3px}
p a>code:hover{color:rgba(0,0,0,.9)}
#header,#content,#footnotes,#footer{width:100%;margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;max-width:62.5em;*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em}
#header::before,#header::after,#content::before,#content::after,#footnotes::before,#footnotes::after,#footer::before,#footer::after{content:" ";display:table}
#header::after,#content::after,#footnotes::after,#footer::after{clear:both}
#content{margin-top:1.25em}
#content::before{content:none}
#header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0}
#header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #dddddf}
#header>h1:only-child,body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #dddddf;padding-bottom:8px}
#header .details{border-bottom:1px solid #dddddf;line-height:1.45;padding-top:.25em;padding-bottom:.25em;padding-left:.25em;color:rgba(0,0,0,.6);display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-flow:row wrap;-webkit-flex-flow:row wrap;flex-flow:row wrap}
#header .details span:first-child{margin-left:-.125em}
#header .details span.email a{color:rgba(0,0,0,.85)}
#header .details br{display:none}
#header .details br+span::before{content:"\00a0\2013\00a0"}
#header .details br+span.author::before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)}
#header .details br+span#revremark::before{content:"\00a0|\00a0"}
#header #revnumber{text-transform:capitalize}
#header #revnumber::after{content:"\00a0"}
#content>h1:first-child:not([class]){color:rgba(0,0,0,.85);border-bottom:1px solid #dddddf;padding-bottom:8px;margin-top:0;padding-top:1rem;margin-bottom:1.25rem}
#toc{border-bottom:1px solid #e7e7e9;padding-bottom:.5em}
#toc>ul{margin-left:.125em}
#toc ul.sectlevel0>li>a{font-style:italic}
#toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0}
#toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none}
#toc li{line-height:1.3334;margin-top:.3334em}
#toc a{text-decoration:none}
#toc a:active{text-decoration:underline}
#toctitle{color:#7a2518;font-size:1.2em}
@media screen and (min-width:768px){#toctitle{font-size:1.375em}
body.toc2{padding-left:15em;padding-right:0}
#toc.toc2{margin-top:0!important;background:#f8f8f7;position:fixed;width:15em;left:0;top:0;border-right:1px solid #e7e7e9;border-top-width:0!important;border-bottom-width:0!important;z-index:1000;padding:1.25em 1em;height:100%;overflow:auto}
#toc.toc2 #toctitle{margin-top:0;margin-bottom:.8rem;font-size:1.2em}
#toc.toc2>ul{font-size:.9em;margin-bottom:0}
#toc.toc2 ul ul{margin-left:0;padding-left:1em}
#toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em}
body.toc2.toc-right{padding-left:0;padding-right:15em}
body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #e7e7e9;left:auto;right:0}}
@media screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0}
#toc.toc2{width:20em}
#toc.toc2 #toctitle{font-size:1.375em}
#toc.toc2>ul{font-size:.95em}
#toc.toc2 ul ul{padding-left:1.25em}
body.toc2.toc-right{padding-left:0;padding-right:20em}}
#content #toc{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
#content #toc>:first-child{margin-top:0}
#content #toc>:last-child{margin-bottom:0}
#footer{max-width:none;background:rgba(0,0,0,.8);padding:1.25em}
#footer-text{color:rgba(255,255,255,.8);line-height:1.44}
#content{margin-bottom:.625em}
.sect1{padding-bottom:.625em}
@media screen and (min-width:768px){#content{margin-bottom:1.25em}
.sect1{padding-bottom:1.25em}}
.sect1:last-child{padding-bottom:0}
.sect1+.sect1{border-top:1px solid #e7e7e9}
#content h1>a.anchor,h2>a.anchor,h3>a.anchor,#toctitle>a.anchor,.sidebarblock>.content>.title>a.anchor,h4>a.anchor,h5>a.anchor,h6>a.anchor{position:absolute;z-index:1001;width:1.5ex;margin-left:-1.5ex;display:block;text-decoration:none!important;visibility:hidden;text-align:center;font-weight:400}
#content h1>a.anchor::before,h2>a.anchor::before,h3>a.anchor::before,#toctitle>a.anchor::before,.sidebarblock>.content>.title>a.anchor::before,h4>a.anchor::before,h5>a.anchor::before,h6>a.anchor::before{content:"\00A7";font-size:.85em;display:block;padding-top:.1em}
#content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{visibility:visible}
#content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:#ba3925;text-decoration:none}
#content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{color:#a53221}
details,.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em}
details>summary:first-of-type{cursor:pointer;display:list-item;outline:none;margin-bottom:.75em}
.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{text-rendering:optimizeLegibility;text-align:left;font-family:"Noto Serif","DejaVu Serif",serif;font-size:1rem;font-style:italic}
table.tableblock.fit-content>caption.title{white-space:nowrap;width:0}
.paragraph.lead>p,#preamble>.sectionbody>[class="paragraph"]:first-of-type p{font-size:1.21875em;line-height:1.6;color:rgba(0,0,0,.85)}
table.tableblock #preamble>.sectionbody>[class="paragraph"]:first-of-type p{font-size:inherit}
.admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%}
.admonitionblock>table td.icon{text-align:center;width:80px}
.admonitionblock>table td.icon img{max-width:none}
.admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6);word-wrap:anywhere}
.admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
.exampleblock>.content{border-style:solid;border-width:1px;border-color:#e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;-webkit-border-radius:4px;border-radius:4px}
.exampleblock>.content>:first-child{margin-top:0}
.exampleblock>.content>:last-child{margin-bottom:0}
.sidebarblock{border-style:solid;border-width:1px;border-color:#dbdbd6;margin-bottom:1.25em;padding:1.25em;background:#f3f3f2;-webkit-border-radius:4px;border-radius:4px}
.sidebarblock>:first-child{margin-top:0}
.sidebarblock>:last-child{margin-bottom:0}
.sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
.exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0}
.literalblock pre,.listingblock>.content>pre{-webkit-border-radius:4px;border-radius:4px;overflow-x:auto;padding:1em;font-size:.8125em}
@media screen and (min-width:768px){.literalblock pre,.listingblock>.content>pre{font-size:.90625em}}
@media screen and (min-width:1280px){.literalblock pre,.listingblock>.content>pre{font-size:1em}}
.literalblock pre,.listingblock>.content>pre:not(.highlight),.listingblock>.content>pre[class="highlight"],.listingblock>.content>pre[class^="highlight "]{background:#f7f7f8}
.literalblock.output pre{color:#f7f7f8;background:rgba(0,0,0,.9)}
.listingblock>.content{position:relative}
.listingblock code[data-lang]::before{display:none;content:attr(data-lang);position:absolute;font-size:.75em;top:.425rem;right:.5rem;line-height:1;text-transform:uppercase;color:inherit;opacity:.5}
.listingblock:hover code[data-lang]::before{display:block}
.listingblock.terminal pre .command::before{content:attr(data-prompt);padding-right:.5em;color:inherit;opacity:.5}
.listingblock.terminal pre .command:not([data-prompt])::before{content:"$"}
.listingblock pre.highlightjs{padding:0}
.listingblock pre.highlightjs>code{padding:1em;-webkit-border-radius:4px;border-radius:4px}
.listingblock pre.prettyprint{border-width:0}
.prettyprint{background:#f7f7f8}
pre.prettyprint .linenums{line-height:1.45;margin-left:2em}
pre.prettyprint li{background:none;list-style-type:inherit;padding-left:0}
pre.prettyprint li code[data-lang]::before{opacity:1}
pre.prettyprint li:not(:first-child) code[data-lang]::before{display:none}
table.linenotable{border-collapse:separate;border:0;margin-bottom:0;background:none}
table.linenotable td[class]{color:inherit;vertical-align:top;padding:0;line-height:inherit;white-space:normal}
table.linenotable td.code{padding-left:.75em}
table.linenotable td.linenos{border-right:1px solid currentColor;opacity:.35;padding-right:.5em}
pre.pygments .lineno{border-right:1px solid currentColor;opacity:.35;display:inline-block;margin-right:.75em}
pre.pygments .lineno::before{content:"";margin-right:-.125em}
.quoteblock{margin:0 1em 1.25em 1.5em;display:table}
.quoteblock:not(.excerpt)>.title{margin-left:-1.5em;margin-bottom:.75em}
.quoteblock blockquote,.quoteblock p{color:rgba(0,0,0,.85);font-size:1.15rem;line-height:1.75;word-spacing:.1em;letter-spacing:0;font-style:italic;text-align:justify}
.quoteblock blockquote{margin:0;padding:0;border:0}
.quoteblock blockquote::before{content:"\201c";float:left;font-size:2.75em;font-weight:bold;line-height:.6em;margin-left:-.6em;color:#7a2518;text-shadow:0 1px 2px rgba(0,0,0,.1)}
.quoteblock blockquote>.paragraph:last-child p{margin-bottom:0}
.quoteblock .attribution{margin-top:.75em;margin-right:.5ex;text-align:right}
.verseblock{margin:0 1em 1.25em}
.verseblock pre{font-family:"Open Sans","DejaVu Sans",sans;font-size:1.15rem;color:rgba(0,0,0,.85);font-weight:300;text-rendering:optimizeLegibility}
.verseblock pre strong{font-weight:400}
.verseblock .attribution{margin-top:1.25rem;margin-left:.5ex}
.quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic}
.quoteblock .attribution br,.verseblock .attribution br{display:none}
.quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.025em;color:rgba(0,0,0,.6)}
.quoteblock.abstract blockquote::before,.quoteblock.excerpt blockquote::before,.quoteblock .quoteblock blockquote::before{display:none}
.quoteblock.abstract blockquote,.quoteblock.abstract p,.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{line-height:1.6;word-spacing:0}
.quoteblock.abstract{margin:0 1em 1.25em;display:block}
.quoteblock.abstract>.title{margin:0 0 .375em;font-size:1.15em;text-align:center}
.quoteblock.excerpt>blockquote,.quoteblock .quoteblock{padding:0 0 .25em 1em;border-left:.25em solid #dddddf}
.quoteblock.excerpt,.quoteblock .quoteblock{margin-left:0}
.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{color:inherit;font-size:1.0625rem}
.quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;font-size:.85rem;text-align:left;margin-right:0}
p.tableblock:last-child{margin-bottom:0}
td.tableblock>.content{margin-bottom:1.25em;word-wrap:anywhere}
td.tableblock>.content>:last-child{margin-bottom:-1.25em}
table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
table.grid-all>*>tr>*{border-width:1px}
table.grid-cols>*>tr>*{border-width:0 1px}
table.grid-rows>*>tr>*{border-width:1px 0}
table.frame-all{border-width:1px}
table.frame-ends{border-width:1px 0}
table.frame-sides{border-width:0 1px}
table.frame-none>colgroup+*>:first-child>*,table.frame-sides>colgroup+*>:first-child>*{border-top-width:0}
table.frame-none>:last-child>:last-child>*,table.frame-sides>:last-child>:last-child>*{border-bottom-width:0}
table.frame-none>*>tr>:first-child,table.frame-ends>*>tr>:first-child{border-left-width:0}
table.frame-none>*>tr>:last-child,table.frame-ends>*>tr>:last-child{border-right-width:0}
table.stripes-all tr,table.stripes-odd tr:nth-of-type(odd),table.stripes-even tr:nth-of-type(even),table.stripes-hover tr:hover{background:#f8f8f7}
th.halign-left,td.halign-left{text-align:left}
th.halign-right,td.halign-right{text-align:right}
th.halign-center,td.halign-center{text-align:center}
th.valign-top,td.valign-top{vertical-align:top}
th.valign-bottom,td.valign-bottom{vertical-align:bottom}
th.valign-middle,td.valign-middle{vertical-align:middle}
table thead th,table tfoot th{font-weight:bold}
tbody tr th{background:#f7f8f7}
tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
p.tableblock>code:only-child{background:none;padding:0}
p.tableblock{font-size:1em}
ol{margin-left:1.75em}
ul li ol{margin-left:1.5em}
dl dd{margin-left:1.125em}
dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0}
ol>li p,ul>li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em}
ul.checklist,ul.none,ol.none,ul.no-bullet,ol.no-bullet,ol.unnumbered,ul.unstyled,ol.unstyled{list-style-type:none}
ul.no-bullet,ol.no-bullet,ol.unnumbered{margin-left:.625em}
ul.unstyled,ol.unstyled{margin-left:0}
ul.checklist{margin-left:.625em}
ul.checklist li>p:first-child>.fa-square-o:first-child,ul.checklist li>p:first-child>.fa-check-square-o:first-child{width:1.25em;font-size:.8em;position:relative;bottom:.125em}
ul.checklist li>p:first-child>input[type="checkbox"]:first-child{margin-right:.25em}
ul.inline{display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-flow:row wrap;-webkit-flex-flow:row wrap;flex-flow:row wrap;list-style:none;margin:0 0 .625em -1.25em}
ul.inline>li{margin-left:1.25em}
.unstyled dl dt{font-weight:400;font-style:normal}
ol.arabic{list-style-type:decimal}
ol.decimal{list-style-type:decimal-leading-zero}
ol.loweralpha{list-style-type:lower-alpha}
ol.upperalpha{list-style-type:upper-alpha}
ol.lowerroman{list-style-type:lower-roman}
ol.upperroman{list-style-type:upper-roman}
ol.lowergreek{list-style-type:lower-greek}
.hdlist>table,.colist>table{border:0;background:none}
.hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none}
td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em}
td.hdlist1{font-weight:bold;padding-bottom:1.25em}
td.hdlist2{word-wrap:anywhere}
.literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
.colist td:not([class]):first-child{padding:.4em .75em 0;line-height:1;vertical-align:top}
.colist td:not([class]):first-child img{max-width:none}
.colist td:not([class]):last-child{padding:.25em 0}
.thumb,.th{line-height:0;display:inline-block;border:solid 4px #fff;-webkit-box-shadow:0 0 0 1px #ddd;box-shadow:0 0 0 1px #ddd}
.imageblock.left{margin:.25em .625em 1.25em 0}
.imageblock.right{margin:.25em 0 1.25em .625em}
.imageblock>.title{margin-bottom:0}
.imageblock.thumb,.imageblock.th{border-width:6px}
.imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em}
.image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0}
.image.left{margin-right:.625em}
.image.right{margin-left:.625em}
a.image{text-decoration:none;display:inline-block}
a.image object{pointer-events:none}
sup.footnote,sup.footnoteref{font-size:.875em;position:static;vertical-align:super}
sup.footnote a,sup.footnoteref a{text-decoration:none}
sup.footnote a:active,sup.footnoteref a:active{text-decoration:underline}
#footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em}
#footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em;border-width:1px 0 0}
#footnotes .footnote{padding:0 .375em 0 .225em;line-height:1.3334;font-size:.875em;margin-left:1.2em;margin-bottom:.2em}
#footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none;margin-left:-1.05em}
#footnotes .footnote:last-of-type{margin-bottom:0}
#content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0}
.gist .file-data>table{border:0;background:#fff;width:100%;margin-bottom:0}
.gist .file-data>table td.line-data{width:99%}
div.unbreakable{page-break-inside:avoid}
.big{font-size:larger}
.small{font-size:smaller}
.underline{text-decoration:underline}
.overline{text-decoration:overline}
.line-through{text-decoration:line-through}
.aqua{color:#00bfbf}
.aqua-background{background:#00fafa}
.black{color:#000}
.black-background{background:#000}
.blue{color:#0000bf}
.blue-background{background:#0000fa}
.fuchsia{color:#bf00bf}
.fuchsia-background{background:#fa00fa}
.gray{color:#606060}
.gray-background{background:#7d7d7d}
.green{color:#006000}
.green-background{background:#007d00}
.lime{color:#00bf00}
.lime-background{background:#00fa00}
.maroon{color:#600000}
.maroon-background{background:#7d0000}
.navy{color:#000060}
.navy-background{background:#00007d}
.olive{color:#606000}
.olive-background{background:#7d7d00}
.purple{color:#600060}
.purple-background{background:#7d007d}
.red{color:#bf0000}
.red-background{background:#fa0000}
.silver{color:#909090}
.silver-background{background:#bcbcbc}
.teal{color:#006060}
.teal-background{background:#007d7d}
.white{color:#bfbfbf}
.white-background{background:#fafafa}
.yellow{color:#bfbf00}
.yellow-background{background:#fafa00}
span.icon>.fa{cursor:default}
a span.icon>.fa{cursor:inherit}
.admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default}
.admonitionblock td.icon .icon-note::before{content:"\f05a";color:#19407c}
.admonitionblock td.icon .icon-tip::before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111}
.admonitionblock td.icon .icon-warning::before{content:"\f071";color:#bf6900}
.admonitionblock td.icon .icon-caution::before{content:"\f06d";color:#bf3400}
.admonitionblock td.icon .icon-important::before{content:"\f06a";color:#bf0000}
.conum[data-value]{display:inline-block;color:#fff!important;background:rgba(0,0,0,.8);-webkit-border-radius:50%;border-radius:50%;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
.conum[data-value] *{color:#fff!important}
.conum[data-value]+b{display:none}
.conum[data-value]::after{content:attr(data-value)}
pre .conum[data-value]{position:relative;top:-.125em}
b.conum *{color:inherit!important}
.conum:not([data-value]):empty{display:none}
dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility}
h1,h2,p,td.content,span.alt{letter-spacing:-.01em}
p strong,td.content strong,div.footnote strong{letter-spacing:-.005em}
p,blockquote,dt,td.content,span.alt{font-size:1.0625rem}
p{margin-bottom:1.25rem}
.sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em}
.exampleblock>.content{background:#fffef7;border-color:#e0e0dc;-webkit-box-shadow:0 1px 4px #e0e0dc;box-shadow:0 1px 4px #e0e0dc}
.print-only{display:none!important}
@page{margin:1.25cm .75cm}
@media print{*{-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:none!important}
html{font-size:80%}
a{color:inherit!important;text-decoration:underline!important}
a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important}
a[href^="http:"]:not(.bare)::after,a[href^="https:"]:not(.bare)::after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em}
abbr[title]::after{content:" (" attr(title) ")"}
pre,blockquote,tr,img,object,svg{page-break-inside:avoid}
thead{display:table-header-group}
svg{max-width:100%}
p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid}
#header,#content,#footnotes,#footer{max-width:none}
#toc,.sidebarblock,.exampleblock>.content{background:none!important}
#toc{border-bottom:1px solid #dddddf!important;padding-bottom:0!important}
body.book #header{text-align:center}
body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em}
body.book #header .details{border:0!important;display:block;padding:0!important}
body.book #header .details span:first-child{margin-left:0!important}
body.book #header .details br{display:block}
body.book #header .details br+span::before{content:none!important}
body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important}
body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always}
.listingblock code[data-lang]::before{display:block}
#footer{padding:0 .9375em}
.hide-on-print{display:none!important}
.print-only{display:block!important}
.hide-for-print{display:none!important}
.show-for-print{display:inherit!important}}
@media print,amzn-kf8{#header>h1:first-child{margin-top:1.25rem}
.sect1{padding:0!important}
.sect1+.sect1{border:0}
#footer{background:none}
#footer-text{color:rgba(0,0,0,.6);font-size:.9em}}
@media amzn-kf8{#header,#content,#footnotes,#footer{padding:0}}
</style>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
</head>
<body class="article toc2 toc-left">
<div id="header">
<div id="toc" class="toc2">
<div id="toctitle">Index</div>
<ul class="sectlevel1"><li><a style="" href="../index.html">Home</a></li><li><a style="" href="../site/download.html">Download</a></li><li><a style="" href="../site/developers.html">Developers</a></li><li><a style="" href="../user_guide.html">User guide</a><ul class="sectlevel2"><li><a style="" href="../overview/intro.html">Language overview</a><ul class="sectlevel3"><li><a style="" href="../overview/gettingstarted.html">Getting started</a><ul class="sectlevel4"></ul></li><li><a style="" href="../language/language.html">Language</a><ul class="sectlevel4"><li><a style="" href="../language/types.html">Types</a><ul class="sectlevel5"></ul></li><li><a style="" href="../language/interfaces.html">Interface signatures</a><ul class="sectlevel5"></ul></li><li><a style="" href="../language/statemachines.html">Interfaces</a><ul class="sectlevel5"><li><a style="" href="../language/states.html">States</a><ul class="sectlevel6"></ul></li><li><a style="" href="../language/transitions.html">Transitions</a><ul class="sectlevel6"></ul></li><li><a style="" href="../language/timing_constraints.html">Timing constraints</a><ul class="sectlevel6"></ul></li><li><a style="" href="../language/data_constraints.html">Data constraints</a><ul class="sectlevel6"></ul></li><li><a style="" href="../language/generic_constraints.html">Generic constraints</a><ul class="sectlevel6"></ul></li></ul></li><li><a style="" href="../language/components.html">Components</a><ul class="sectlevel5"></ul></li><li><a style="" href="../language/expressions.html">Statements and expressions</a><ul class="sectlevel5"></ul></li><li><a style="" href="../language/comments.html">Documenting models</a><ul class="sectlevel5"></ul></li></ul></li></ul></li><li><a style="" href="../generators/generators.html">Generator tasks</a><ul class="sectlevel3"><li><a style="" href="../generators/umlgeneration.html">Generation of UML diagrams</a><ul class="sectlevel4"></ul></li><li><a style="" href="../generators/docgeneration.html">Document generation</a><ul class="sectlevel4"></ul></li><li><a style="" href="../generators/monitoring.html">Monitoring</a><ul class="sectlevel4"></ul></li><li><a style="" href="../generators/reachabilitygraph.html">Reachability graph</a><ul class="sectlevel4"></ul></li><li><a style="" href="../generators/testgeneration.html">Test generation</a><ul class="sectlevel4"></ul></li></ul></li><li><a style="" href="../tutorial/intro.html">Tutorial</a><ul class="sectlevel3"><li><a style="" href="../tutorial/preparation.html">Preparation</a><ul class="sectlevel4"></ul></li><li><a style="" href="../tutorial/serviceinterface.html">Service interface</a><ul class="sectlevel4"><li><a style="" href="../tutorial/activity1.html">Activity 1: Get familiar with the Vending Machine</a><ul class="sectlevel5"></ul></li><li><a style="" href="../tutorial/activity2.html">Activity 2: Make an initial specification of the service interface</a><ul class="sectlevel5"></ul></li><li><a style="" href="../tutorial/activity3.html">Activity 3: Check an execution trace against the state machine</a><ul class="sectlevel5"></ul></li><li><a style="" href="../tutorial/activity4.html">Activity 4: Extend the specification of the service interface</a><ul class="sectlevel5"></ul></li><li><a style="" href="../tutorial/activity5.html">Activity 5: Add a time constraint</a><ul class="sectlevel5"></ul></li><li><a style="" href="../tutorial/activity6.html">Activity 6: Documentation generation</a><ul class="sectlevel5"></ul></li></ul></li><li><a style="" href="../tutorial/coincheckinterface.html">Coin checker interface</a><ul class="sectlevel4"><li><a style="" href="../tutorial/activity7.html">Activity 7: State machine of the coin checker</a><ul class="sectlevel5"></ul></li><li><a style="" href="../tutorial/activity8.html">Activity 8: Check the specified interfaces by monitoring</a><ul class="sectlevel5"></ul></li></ul></li><li><a style="" href="../tutorial/userinterface.html">User interface</a><ul class="sectlevel4"><li><a style="" href="../tutorial/activity9.html">Activity 9: State machine of the user interface</a><ul class="sectlevel5"></ul></li><li><a style="" href="../tutorial/activity10.html">Activity 10: Check the specified interfaces by monitoring</a><ul class="sectlevel5"></ul></li><li><a style="" href="../tutorial/activity11.html">Activity 11: Define time constraints</a><ul class="sectlevel5"></ul></li><li><a style="" href="../tutorial/activity12.html">Activity 12: Define a data constraint</a><ul class="sectlevel5"></ul></li></ul></li><li><a style="" href="../tutorial/componentmodel.html">Component model</a><ul class="sectlevel4"><li><a style="" href="../tutorial/activity13.html">Activity 13: Define component and add functional constraint</a><ul class="sectlevel5"></ul></li><li><a style="" href="../tutorial/activity14.html">Activity 14: Define additional component constraints</a><ul class="sectlevel5"></ul></li></ul></li><li><a style="" href="../tutorial/concludingremarks.html">Concluding remarks</a><ul class="sectlevel4"></ul></li></ul></li><li><a style="" href="../commandline/commandline.html">Command line tool</a><ul class="sectlevel3"></ul></li><li><a style="font-weight: bold" href="eventfiles.html">Event files</a><ul class="sectlevel3"></ul></li><li><a style="" href="../shortcuts/shortcuts.html">Shortcuts</a><ul class="sectlevel3"></ul></li><li><a style="" href="../problems/problemsolving.html">Problem solving</a><ul class="sectlevel3"></ul></li></ul></li></ul>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_structure_of_event_files"><a class="anchor" href="#_structure_of_event_files"></a>Structure of Event Files</h2>
<div class="sectionbody">
<div class="sect2 normal">
<h3 id="_introduction"><a class="anchor" href="#_introduction"></a>Introduction</h3>
<div class="paragraph">
<p>Event files (extension .events) contain a sequence of events as a result of client-server interactions where servers are usually components that implement CommaSuite interfaces. Events are commands, signals, notifications and replies to commands. They are defined in a CommaSuite interface signature.</p>
</div>
<div class="paragraph">
<p>Event files are not intended to be manually constructed by the users. Usually they are automatically generated from existing system logs and observed client-server communication. The file structure is optimized for machine processing.</p>
</div>
<div class="paragraph">
<p>This document describes the format of event files. The target audience is engineers that implement event file generators and users that specify small trace files for experimentation purposes.</p>
</div>
</div>
<div class="sect2">
<h3 id="_structure"><a class="anchor" href="#_structure"></a>Structure</h3>
<div class="paragraph">
<p>Event files have the following sections:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Imports of the used CommaSuite signatures and component models (optional)</p>
</li>
<li>
<p>Declaration of connections</p>
</li>
<li>
<p>Optional declaration of component instances</p>
</li>
<li>
<p>Events</p>
</li>
</ul>
</div>
<div class="paragraph">
<p><strong>Important</strong>: event files must not contain multiline comments. Single line comments are allowed only on separate lines and between events. In general, it is advisable to avoid comments in these files.</p>
</div>
<div class="paragraph">
<p><span class="maroon">import</span> <span class="blue">"../IImaging.signature"</span><br>
<span class="maroon">import</span> <span class="blue">"../ITemprature.signature"</span><br>
<span class="maroon">import</span> <span class="blue">"../IVacuum.signature"</span><br>
<span class="maroon">import</span> <span class="blue">"../Imaging.component"</span></p>
</div>
<div class="paragraph">
<p><span class="maroon">connections</span><br>
(Client1, p1, IImaging, 0 c0, iImagPort)<br>
(Client2, p2, ITemprature, 0 c0, iTempPort)<br>
(Client3, p3, IVacuum, 0 c0, iVacPort)</p>
</div>
<div class="paragraph">
<p><span class="maroon">components</span><br>
Imaging c0</p>
</div>
<div class="paragraph">
<p><span class="maroon">events</span><br></p>
</div>
<div class="paragraph">
<p><span class="maroon">command</span> 1.0 0.0 Client2 p2 c0 iTempPort ITemperature SetTemperature<br>
int 80<br>
<span class="maroon">End</span></p>
</div>
<div class="paragraph">
<p><span class="maroon">Reply</span> 1.002 0.002 c0 iTempPort Client2 p2 ITemperature SetTemperature<br>
<span class="maroon">End</span></p>
</div>
<div class="sect3">
<h4 id="_connections_and_component_instances"><a class="anchor" href="#_connections_and_component_instances"></a>Connections and Component Instances</h4>
<div class="paragraph">
<p>A connection represents the usage of an interface by a single client. The interface is provided by a server.</p>
</div>
<div class="paragraph">
<p>Connection structure:</p>
</div>
<div class="paragraph">
<p><em>(client_id, client_port, interface_name, server_id, server_port)</em></p>
</div>
<div class="paragraph">
<p>Client and server identifiers are symbolic names that denote communicating parties. The identifiers are unique in the scope of the events file. A communication party can play the role of a client in one connection and the role of a server in another one. For example, a component instance with a given name (declared in the component declarations section) can be a server for connections on the provided ports, and a client for the connections originating from its required ports.</p>
</div>
<div class="paragraph">
<p>An events file has to contain at least one connection declaration and may optionally contain declarations of component instances. If component instances are declared and used in the connections then the port names and their interfaces as given in the component definition must be used consistently in the connections. This is explained below.</p>
</div>
<div class="paragraph">
<p>In the example, a single component instance <em>c0</em> of type <em>Imaging</em> is declared. The definition of <em>Imaging</em> is as follows (as a part of a definition not fully shown here):</p>
</div>
<div class="paragraph">
<p><span class="maroon">component</span> Imaging</p>
</div>
<div class="paragraph">
<p><span class="maroon">provided port</span> IImaging iImagPort</p>
</div>
<div class="paragraph">
<p><span class="maroon">provided port</span> ITemperature iTempPort</p>
</div>
<div class="paragraph">
<p><span class="maroon">provided port</span> IVacuum iVacPort</p>
</div>
<div class="paragraph">
<p>The names of the ports in the definition have to be used in the connections in which c0 participates. In the example file there is one client for each port (<em>Client1</em>, <em>Client2</em>, and <em>Client3</em> respectively). This is captured in the declaration of three connections. As can be seen, the server ports and the associated interfaces match the component definition. The client identifiers and the client ports in this case are just names, there is no component declaration for them.</p>
</div>
<div class="paragraph">
<p>It is possible that a component instance is a client for another component instance. In this case the client port name in a connection must be equal to the name of a required port in the component definition. Circular connections in which a communicating party is a direct client of itself in the same connection are not allowed.</p>
</div>
<div class="paragraph">
<p>It is allowed to declare multiple component instances with different identifiers. Multiple component types can be used in component instance declarations.</p>
</div>
<div class="paragraph">
<p>There is a validity check for events that involve component instances:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>if a component instance is a client or a server in an event then the corresponding client or server port must be defined in the component model</p>
</li>
<li>
<p>an incoming event to a provided port must be a command or a signal in the port&#8217;s interface; conversely, an event originating from a provided port must be a reply or a notification</p>
</li>
<li>
<p>an incoming event to a required port must be a reply or a notification; an event from a required port must be a command or a signal</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>A violation of the rules above will be indicated as an error in the events file editor when used in the Eclipse IDE. This is useful when the engineers experiment with small manually created event files in order to understand the file structure.</p>
</div>
</div>
<div class="sect3">
<h4 id="_events"><a class="anchor" href="#_events"></a>Events</h4>
<div class="paragraph">
<p>Events are occurrences of commands and their replies, signals and notifications as defined in a CommaSuite signature.</p>
</div>
<div class="paragraph">
<p>An event has the following structure:</p>
</div>
<div class="paragraph">
<p>_EventId<br>
Event_description<br>
<br>
parameter<br>
parameter<br>
<br>
<strong>End</strong></p>
</div>
<div class="paragraph">
<p>EventId is optional. If given, it is placed on the line before the event. It is useful for visualization purposes and for facilitating the correspondence between the error reports and the events where the error is detected.</p>
</div>
<div class="paragraph">
<p>The Event_description gives the type and the name of the event and time information about its occurrence. An event may have zero or more parameters, each on a separate line. The keyword ‘End’ indicates the end of the event description, it must always be present and placed on a new line.</p>
</div>
<div class="paragraph">
<p>The event description has the following format:</p>
</div>
<div class="paragraph">
<p><em>event_type timestamp time_delta source_id source_port target_id target_port interface_name event_name</em></p>
</div>
<div class="paragraph">
<p>Event descriptions are placed on a separate line.</p>
</div>
<div class="ulist">
<ul>
<li>
<p><em>event_type</em>: one of Command, Signal, Notification, Reply</p>
</li>
<li>
<p><em>timestamp</em>: a representation of the time of the event occurrence. Can be either an epoch time given as a real number or a date-time format: YYYY-MM-DD-HH:MM:SS.MSEC</p>
</li>
<li>
<p><em>time_delta</em> is the time difference between two consecutive events. It is measured in seconds and given as a real number. The first event has time_delta 0.0</p>
</li>
<li>
<p><em>source_id, source_port, target_id, target_port</em> must match a connection declaration. In case of commands and signals, source_id and source_port are the connection’s client_id and client_port; target_id and target_port are the connection’s server_id and server_port. In case of replies and notifications, the situation is reversed</p>
</li>
<li>
<p><em>interface_name</em> and <em>event_name:</em> the name of the event’s interface and the event name. In case of a reply, the name is the name of the command</p>
</li>
</ul>
</div>
</div>
<div class="sect3">
<h4 id="_parameters"><a class="anchor" href="#_parameters"></a>Parameters</h4>
<div class="paragraph">
<p>An event may have zero or more parameters. Commands may have <strong>in</strong>, <strong>inout</strong>, and <strong>out</strong> parameters. A command event gives its <strong>in</strong> and <strong>inout</strong> parameters in the order of their definition in the signature.</p>
</div>
<div class="paragraph">
<p>A reply to a command gives parameters in the following order: <strong>inout</strong> and <strong>out</strong> parameters (if any) in the order of their definition, reply value (if any)</p>
</div>
<div class="paragraph">
<p>Every parameter is given in a separate line and has the following structure:</p>
</div>
<div class="paragraph">
<p><em>type_indicator</em> <em>value</em></p>
</div>
</div>
<div class="sect3">
<h4 id="_type_indicators"><a class="anchor" href="#_type_indicators"></a>Type Indicators</h4>
<div class="ulist">
<ul>
<li>
<p>Simple types: int, bool, real, string, bulkdata</p>
</li>
<li>
<p>Enum types: enum</p>
</li>
<li>
<p>Record types: record</p>
</li>
<li>
<p>Collection types: vector</p>
</li>
</ul>
</div>
</div>
<div class="sect3">
<h4 id="_simple_and_enum_values"><a class="anchor" href="#_simple_and_enum_values"></a>Simple and Enum Values</h4>
<div class="ulist">
<ul>
<li>
<p>Simple types:</p>
<div class="ulist">
<ul>
<li>
<p>int: 1, 123</p>
</li>
<li>
<p>bool: true, false</p>
</li>
<li>
<p>real: 123.0, NaN</p>
</li>
<li>
<p>string: “some string”</p>
</li>
<li>
<p>bulkdata: the value of a bulkdata is just an integer that indicates the number of bytes in the data. <em>Important:</em> the actual data are not given</p>
</li>
</ul>
</div>
</li>
<li>
<p>Enum types: the name of the type and the literal, e.g. Status OK</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Some examples:</p>
</div>
<div class="paragraph">
<p><span class="maroon">command</span> 1.0 0.0 Client2 p2 c0 iTempPort ITemperature SetTemperature<br>
int 80<br>
<span class="maroon">End</span></p>
</div>
<div class="paragraph">
<p><span class="maroon">Reply</span> 2.005 0.005 c0 iImagPort Client1 p1 IImaging PrepareImage<br>
enum Result Ok<br>
<span class="maroon">End</span></p>
</div>
</div>
<div class="sect3">
<h4 id="_record_values"><a class="anchor" href="#_record_values"></a>Record Values</h4>
<div class="paragraph">
<p>Record values have the following general structure:</p>
</div>
<div class="paragraph">
<p><em>Record_type_name field_values END</em></p>
</div>
<div class="paragraph">
<p>If the record type is defined in a CommaSuite interface, the name looks like:</p>
</div>
<div class="paragraph">
<p><em>_commaInterface interface_name type_name</em></p>
</div>
<div class="paragraph">
<p>If the record type is defined in a type file the name is just the name of the record type.</p>
</div>
<div class="paragraph">
<p>Field values are enumerated with a space as a delimiter and without giving the field names. Please note that type indicators for field values are not given either.</p>
</div>
<div class="paragraph">
<p>Examples:</p>
</div>
<div class="paragraph">
<p>Record type defined in an interface:</p>
</div>
<div class="paragraph">
<p><span class="maroon">signature</span> ITest<br>
<span class="maroon">Type</span><br>
<span class="maroon">enum</span> Status {OK Failed}<br>
<span class="maroon">record</span> Point {real x, real y}</p>
</div>
<div class="paragraph">
<p>Record value of type <em>Point</em>:</p>
</div>
<div class="paragraph">
<p><span class="maroon">Reply</span> 0.4 0.04 Server ev Client1 p ITest getOnePoint<br>
record _commaInterface ITest Point 0.0 0.0 END<br>
<span class="maroon">End</span></p>
</div>
<div class="paragraph">
<p>Nested record type defined in an interface:</p>
</div>
<div class="paragraph">
<p><span class="maroon">record</span> Point {real x, real y}<br>
<span class="maroon">record</span> Arrow {Point begin, Point end}</p>
</div>
<div class="paragraph">
<p>Record value of type Arrow expressed in CommaSuite expression syntax:</p>
</div>
<div class="paragraph">
<p>Arrow{begin = Point{x = 0.0, y = 0.0}, end = Point{x = 0.0, y = 0.0}}</p>
</div>
<div class="paragraph">
<p>The same record value as a parameter in events file:</p>
</div>
<div class="paragraph">
<p><span class="maroon">Reply</span> 0.4 0.04 Server ev Client1 p ITest getArrow<br>
record _commaInterface ITest Arrow _commaInterface ITest Point 0.0 0.0 END _commaInterface ITest Point 0.0 0.0 END END<br>
<span class="maroon">End</span></p>
</div>
</div>
<div class="sect3">
<h4 id="_vector_values"><a class="anchor" href="#_vector_values"></a>Vector Values</h4>
<div class="paragraph">
<p>Vector values have the following general structure:</p>
</div>
<div class="paragraph">
<p><em>Base_type_indicator size values END</em></p>
</div>
<div class="paragraph">
<p>Examples:</p>
</div>
<div class="paragraph">
<p>Vector type of records defined in an interface:</p>
</div>
<div class="paragraph">
<p><span class="maroon">record</span> Point {real x, real y}<br>
<span class="maroon">vector</span> Points = Point []<br></p>
</div>
<div class="paragraph">
<p>Value of type <em>Points</em> expressed in CommaSuite expression syntax:</p>
</div>
<div class="paragraph">
<p>&lt;Points&gt;[Point{x = 1.0, y = 2.1}, Point{x = 2.3, y = 3.2}]</p>
</div>
<div class="paragraph">
<p>The same vector value as a parameter in events file:</p>
</div>
<div class="paragraph">
<p><span class="maroon">Notification</span> 0.2 1.96 Server ev Client1 p ITest activePoints<br>
vector record 2 _commaInterface ITest Point 1.0 2.1 END _commaInterface ITest Point 2.3 3.2 END END<br>
<span class="maroon">End</span></p>
</div>
<div class="paragraph">
<p><strong>Important:</strong> please note that maps are not supported as values carried by events. They, however, can be used in the models as variable values.</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_issues_with_large_event_files"><a class="anchor" href="#_issues_with_large_event_files"></a>Issues with Large Event Files</h3>
<div class="paragraph">
<p>Opening of an event file in the Eclipse IDE will cause parsing of the text and execution of the validation checks.
If the file is very large (most realistic event files are large) an 'out of memory' exception may occur. Thus we do not recommend inspecting and editing of
such files in the Eclipse editor.</p>
</div>
<div class="paragraph">
<p>Reading large events files during monitoring (either invoked from the Eclipse IDE or from the command line) is not
a problem because the monitor reads the file incrementally in order to reduce the used memory.</p>
</div>
</div>
<div class="sect2">
<h3 id="_appendix"><a class="anchor" href="#_appendix"></a>Appendix</h3>
<div class="paragraph">
<p>Grammar of parameters:</p>
</div>
<div class="paragraph">
<p>Parameter ::= TypeIndicator Value</p>
</div>
<div class="paragraph">
<p>TypeIndicator ::= ‘int’ | ‘bool’ | ‘real’ | ‘string’ | ‘bulkdata’ | ‘enum’ | ‘record’ | ‘vector’</p>
</div>
<div class="paragraph">
<p>Value ::= INT_VALUE |<br>
BOOL_VALUE |<br>
REAL_VALUE |<br>
STRING_VALUE |<br>
EnumValue |<br>
RecordValue |<br>
VectorValue</p>
</div>
<div class="paragraph">
<p>EnumValue ::= EnumTypeName EnumLiteral<br>
EnumTypeName ::= ID<br>
EnumLiteral ::= ID</p>
</div>
<div class="paragraph">
<p>RecordValue ::= (‘_commaInterface’ InterfaceName)? RecordTypeName Value+ ‘END’<br>
InterfaceName ::= ID<br>
RecordTypeName ::= ID</p>
</div>
<div class="paragraph">
<p>VectorValue ::= BaseTypeIndicator Size Value* ‘END’<br>
BaseTypeIndicator ::= TypeIndicator<br>
Size ::= NON_NEG_INT</p>
</div>
<div class="paragraph">
<p>The terminals INT_VALUE, BOOL_VALUE, REAL_VALUE, ID and NON_NEG_INT are defined as regular expressions:</p>
</div>
<div class="paragraph">
<p>INT_VALUE ::= (‘-’)? (‘0’..’9’)+</p>
</div>
<div class="paragraph">
<p>BOOL_VALUE ::= ‘true’ | ‘false’</p>
</div>
<div class="paragraph">
<p>REAL_VALUE ::= (INT_NUMBER '.' (‘0’..’9’)+ (('E' | 'e') INT_VALUE)?) | ‘NaN’</p>
</div>
<div class="paragraph">
<p>ID ::= ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*</p>
</div>
<div class="paragraph">
<p>NON_NEG_INT ::= (‘0’..’9’)+</p>
</div>
<div class="paragraph">
<p>STRING_VALUE denotes any sequence of characters surrounded by single or double quotes.</p>
</div>
</div>
</div>
</div>
</div>
</body>
</html>