diff options
author | Aleksandar Kanchev <kanchev@itestra.com> | 2013-02-13 12:52:44 +0100 |
---|---|---|
committer | Aleksandar Kanchev <kanchev@itestra.com> | 2013-02-13 12:52:44 +0100 |
commit | 7a0e6ce52432f2c88c9f56bae9a550655db79681 (patch) | |
tree | 9ae4db4db2ea765c0e38f39d70cdf3f0ff4dc7ab | |
parent | 393051115520fb2fcfe91d24d345c7e9444adf91 (diff) | |
download | genivi-common-api-runtime-7a0e6ce52432f2c88c9f56bae9a550655db79681.tar.gz |
add gitattributes and proper crlf handling
-rw-r--r-- | .gitattributes | 41 | ||||
-rw-r--r-- | README.html | 956 | ||||
-rw-r--r-- | src/CommonAPI/MiddlewareInfo.h | 104 | ||||
-rw-r--r-- | src/CommonAPI/Runtime.cpp | 112 | ||||
-rw-r--r-- | src/CommonAPI/Runtime.h | 86 | ||||
-rw-r--r-- | src/CommonAPI/Stub.h | 88 |
6 files changed, 714 insertions, 673 deletions
diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..21d46c5 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,41 @@ +# set default behaviour, in case users don't have core.autocrlf set. +* text=auto + +# Explicitly declare text files we want to always be normalized and converted +# to native line endings on checkout. +*.am text +*.ac text +*.m4 text +*.in text + +*.c text +*.cpp text +*.h text +*.hpp text + +*.fidl text +*.java text +*.xtend text + +*.html text +*.xml text + +*.properties text + +AUTHORS text +LICENSE text +README text + +# Eclipse +.autotools text +.cproject text +.project text +org.eclipse.core.resources.prefs text +*.MF text + +# Declare files that will always have CRLF line endings on checkout. +*.sln text eol=crlf + +# Denote all files that are truly binary and should not be modified. +*.png binary +*.jpg binary diff --git a/README.html b/README.html index 20015e2..6f851ce 100644 --- a/README.html +++ b/README.html @@ -1,478 +1,478 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
- "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
-<meta name="generator" content="AsciiDoc 8.4.5" />
-<title>GENIVI_CommonAPI</title>
-<style type="text/css">
-/* Debug borders */
-p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {
-/*
- border: 1px solid red;
-*/
-}
-
-body {
- margin: 1em 5% 1em 5%;
-}
-
-a {
- color: blue;
- text-decoration: underline;
-}
-a:visited {
- color: fuchsia;
-}
-
-em {
- font-style: italic;
- color: navy;
-}
-
-strong {
- font-weight: bold;
- color: #083194;
-}
-
-tt {
- color: navy;
-}
-
-h1, h2, h3, h4, h5, h6 {
- color: #527bbd;
- font-family: sans-serif;
- margin-top: 1.2em;
- margin-bottom: 0.5em;
- line-height: 1.3;
-}
-
-h1, h2, h3 {
- border-bottom: 2px solid silver;
-}
-h2 {
- padding-top: 0.5em;
-}
-h3 {
- float: left;
-}
-h3 + * {
- clear: left;
-}
-
-div.sectionbody {
- font-family: serif;
- margin-left: 0;
-}
-
-hr {
- border: 1px solid silver;
-}
-
-p {
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-
-ul, ol, li > p {
- margin-top: 0;
-}
-
-pre {
- padding: 0;
- margin: 0;
-}
-
-span#author {
- color: #527bbd;
- font-family: sans-serif;
- font-weight: bold;
- font-size: 1.1em;
-}
-span#email {
-}
-span#revnumber, span#revdate, span#revremark {
- font-family: sans-serif;
-}
-
-div#footer {
- font-family: sans-serif;
- font-size: small;
- border-top: 2px solid silver;
- padding-top: 0.5em;
- margin-top: 4.0em;
-}
-div#footer-text {
- float: left;
- padding-bottom: 0.5em;
-}
-div#footer-badges {
- float: right;
- padding-bottom: 0.5em;
-}
-
-div#preamble {
- margin-top: 1.5em;
- margin-bottom: 1.5em;
-}
-div.tableblock, div.imageblock, div.exampleblock, div.verseblock,
-div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
-div.admonitionblock {
- margin-top: 1.5em;
- margin-bottom: 1.5em;
-}
-div.admonitionblock {
- margin-top: 2.5em;
- margin-bottom: 2.5em;
-}
-
-div.content { /* Block element content. */
- padding: 0;
-}
-
-/* Block element titles. */
-div.title, caption.title {
- color: #527bbd;
- font-family: sans-serif;
- font-weight: bold;
- text-align: left;
- margin-top: 1.0em;
- margin-bottom: 0.5em;
-}
-div.title + * {
- margin-top: 0;
-}
-
-td div.title:first-child {
- margin-top: 0.0em;
-}
-div.content div.title:first-child {
- margin-top: 0.0em;
-}
-div.content + div.title {
- margin-top: 0.0em;
-}
-
-div.sidebarblock > div.content {
- background: #ffffee;
- border: 1px solid silver;
- padding: 0.5em;
-}
-
-div.listingblock > div.content {
- border: 1px solid silver;
- background: #f4f4f4;
- padding: 0.5em;
-}
-
-div.quoteblock {
- padding-left: 2.0em;
- margin-right: 10%;
-}
-div.quoteblock > div.attribution {
- padding-top: 0.5em;
- text-align: right;
-}
-
-div.verseblock {
- padding-left: 2.0em;
- margin-right: 10%;
-}
-div.verseblock > div.content {
- white-space: pre;
-}
-div.verseblock > div.attribution {
- padding-top: 0.75em;
- text-align: left;
-}
-/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
-div.verseblock + div.attribution {
- text-align: left;
-}
-
-div.admonitionblock .icon {
- vertical-align: top;
- font-size: 1.1em;
- font-weight: bold;
- text-decoration: underline;
- color: #527bbd;
- padding-right: 0.5em;
-}
-div.admonitionblock td.content {
- padding-left: 0.5em;
- border-left: 2px solid silver;
-}
-
-div.exampleblock > div.content {
- border-left: 2px solid silver;
- padding: 0.5em;
-}
-
-div.imageblock div.content { padding-left: 0; }
-span.image img { border-style: none; }
-a.image:visited { color: white; }
-
-dl {
- margin-top: 0.8em;
- margin-bottom: 0.8em;
-}
-dt {
- margin-top: 0.5em;
- margin-bottom: 0;
- font-style: normal;
- color: navy;
-}
-dd > *:first-child {
- margin-top: 0.1em;
-}
-
-ul, ol {
- list-style-position: outside;
-}
-ol.arabic {
- list-style-type: decimal;
-}
-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;
-}
-
-div.compact ul, div.compact ol,
-div.compact p, div.compact p,
-div.compact div, div.compact div {
- margin-top: 0.1em;
- margin-bottom: 0.1em;
-}
-
-div.tableblock > table {
- border: 3px solid #527bbd;
-}
-thead {
- font-family: sans-serif;
- font-weight: bold;
-}
-tfoot {
- font-weight: bold;
-}
-td > div.verse {
- white-space: pre;
-}
-p.table {
- margin-top: 0;
-}
-/* Because the table frame attribute is overriden by CSS in most browsers. */
-div.tableblock > table[frame="void"] {
- border-style: none;
-}
-div.tableblock > table[frame="hsides"] {
- border-left-style: none;
- border-right-style: none;
-}
-div.tableblock > table[frame="vsides"] {
- border-top-style: none;
- border-bottom-style: none;
-}
-
-
-div.hdlist {
- margin-top: 0.8em;
- margin-bottom: 0.8em;
-}
-div.hdlist tr {
- padding-bottom: 15px;
-}
-dt.hdlist1.strong, td.hdlist1.strong {
- font-weight: bold;
-}
-td.hdlist1 {
- vertical-align: top;
- font-style: normal;
- padding-right: 0.8em;
- color: navy;
-}
-td.hdlist2 {
- vertical-align: top;
-}
-div.hdlist.compact tr {
- margin: 0;
- padding-bottom: 0;
-}
-
-.comment {
- background: yellow;
-}
-
-@media print {
- div#footer-badges { display: none; }
-}
-
-div#toctitle {
- color: #527bbd;
- font-family: sans-serif;
- font-size: 1.1em;
- font-weight: bold;
- margin-top: 1.0em;
- margin-bottom: 0.1em;
-}
-
-div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
- margin-top: 0;
- margin-bottom: 0;
-}
-div.toclevel2 {
- margin-left: 2em;
- font-size: 0.9em;
-}
-div.toclevel3 {
- margin-left: 4em;
- font-size: 0.9em;
-}
-div.toclevel4 {
- margin-left: 6em;
- font-size: 0.9em;
-}
-/* Workarounds for IE6's broken and incomplete CSS2. */
-
-div.sidebar-content {
- background: #ffffee;
- border: 1px solid silver;
- padding: 0.5em;
-}
-div.sidebar-title, div.image-title {
- color: #527bbd;
- font-family: sans-serif;
- font-weight: bold;
- margin-top: 0.0em;
- margin-bottom: 0.5em;
-}
-
-div.listingblock div.content {
- border: 1px solid silver;
- background: #f4f4f4;
- padding: 0.5em;
-}
-
-div.quoteblock-attribution {
- padding-top: 0.5em;
- text-align: right;
-}
-
-div.verseblock-content {
- white-space: pre;
-}
-div.verseblock-attribution {
- padding-top: 0.75em;
- text-align: left;
-}
-
-div.exampleblock-content {
- border-left: 2px solid silver;
- padding-left: 0.5em;
-}
-
-/* IE6 sets dynamically generated links as visited. */
-div#toc a:visited { color: blue; }
-</style>
-</head>
-<body>
-<div id="header">
-<h1>GENIVI_CommonAPI</h1>
-<span id="author">Juergen Gehring - juergen.gehring@bmw.de, Manfred Bathelt - manfred.bathelt@bmw.de</span><br />
-</div>
-<h2 id="_copyright">Copyright</h2>
-<div class="sectionbody">
-<div class="paragraph"><p>Copyright © 2013, GENIVI Alliance, Inc.
-Copyright © 2013, BMW AG</p></div>
-<div class="paragraph"><p>This file is part of GENIVI Project IPC Common API.</p></div>
-<div class="paragraph"><p>Contributions are licensed to the GENIVI Alliance under one or more
-Contribution License Agreements or MPL 2.0 .</p></div>
-<div class="paragraph"><p>© Copyright
-This Source Code Form is subject to the terms of the
-Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with
-this file, You can obtain one at <a href="http://mozilla.org/MPL/2.0/">http://mozilla.org/MPL/2.0/</a>.</p></div>
-<div class="paragraph"><p>For further information see <a href="https://collab.genivi.org/wiki/display/genivi/SysInfraEGCommonIDLCommonAPIGuide">https://collab.genivi.org/wiki/display/genivi/SysInfraEGCommonIDLCommonAPIGuide</a></p></div>
-</div>
-<h2 id="_license">License</h2>
-<div class="sectionbody">
-<div class="paragraph"><p>This project is licensed under MPL 2.0</p></div>
-<div class="paragraph"><p>Contribution is done under GENIVI CLA or MPL2.0.</p></div>
-</div>
-<h2 id="_version">Version</h2>
-<div class="sectionbody">
-<div class="paragraph"><p>The current version can be taken from the git.</p></div>
-</div>
-<h2 id="_common_api_overview">Common API Overview</h2>
-<div class="sectionbody">
-<div class="paragraph"><p>Common API and its mechanism specific bindings (e.g. Common API D-Bus) provide a set of libraries and tools to work with
-RPC communication in a way independent of wich mechanism is used. It consist currently consists of four subprojects:</p></div>
-<div class="listingblock">
-<div class="content">
-<pre><tt>CommonAPI - This is the base C++ library, which provides the application interface for users and can
- load runtime bindings such as dbus. (This is the current package.)
-CommonAPI-Tools - The eclipse based tools for CommonAPI. This is essentially the code generator for
- Franca -> Common API C++ code.
-CommonAPI-D-Bus - This is the D-Bus binding C++ library, which provides the necesary code to communicate
- over D-Bus. This is invisible to the application code, and simply needs to be linked against.
-CommonAPI-D-Bus-Tools - The eclipse based tools for CommonAPI D-Bus. This is the code generator for
- Franca -> Common API D-Bus C++ code.</tt></pre>
-</div></div>
-</div>
-<h2 id="_build_instructions">Build Instructions</h2>
-<div class="sectionbody">
-<div class="paragraph"><p>Use autotools to build this package:</p></div>
-<div class="listingblock">
-<div class="content">
-<pre><tt># ./autoreconf -i
-# ./configure
-# make
-# sudo make install (or alternative install process, eg. checkinstall on debian-based distributions, such as Ubuntu)</tt></pre>
-</div></div>
-<div class="paragraph"><p>If the environment variable GTEST_CONFIG is set to the path of the gtest-config script in a Gtest tree test will also be built.</p></div>
-</div>
-<h2 id="_working_on_the_code_amp_contribution">Working on the code & contribution</h2>
-<div class="sectionbody">
-<div class="literalblock">
-<div class="title">First get the code from the git:</div>
-<div class="content">
-<pre><tt>git clone</tt></pre>
-</div></div>
-<div class="literalblock">
-<div class="title">Get an overview of all branches:</div>
-<div class="content">
-<pre><tt>git branch</tt></pre>
-</div></div>
-<div class="literalblock">
-<div class="title">Switch to the branch you want to work on (master is the feature branch) and verify that it has switched (* changed)</div>
-<div class="content">
-<pre><tt>git checkout <your branch>
-git branch</tt></pre>
-</div></div>
-<div class="literalblock">
-<div class="title">Best practice is to create a local branch based on the current branch:</div>
-<div class="content">
-<pre><tt>git branch working_branch</tt></pre>
-</div></div>
-<div class="paragraph"><p>Start working, best practice is to commit smaller, compilable pieces during the development process that makes it easier to handle later on.</p></div>
-<div class="literalblock">
-<div class="title">If you want to commit you changes, send them to the author, you can create a patch like this:</div>
-<div class="content">
-<pre><tt>git format-patch working_branch <your branch></tt></pre>
-</div></div>
-<div class="paragraph"><p>This creates a set of patches that are published via the mailing list.The patches will be discussed and then merged & uploaded on the git by the maintainer.</p></div>
-<div class="paragraph"><p>Patches can be accepted either under GENIVI Cla or MPL 2.0 (see section License). Please be sure that the signed-off-by is set correctly. For more, check out <a href="http://gerrit.googlecode.com/svn/documentation/2.0/user-signedoffby.html">http://gerrit.googlecode.com/svn/documentation/2.0/user-signedoffby.html</a></p></div>
-</div>
-<div id="footer">
-<div id="footer-text">
-Last updated 2013-01-21 14:49:00 CEST
-</div>
-</div>
-</body>
-</html>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" + "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> +<meta name="generator" content="AsciiDoc 8.4.5" /> +<title>GENIVI_CommonAPI</title> +<style type="text/css"> +/* Debug borders */ +p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 { +/* + border: 1px solid red; +*/ +} + +body { + margin: 1em 5% 1em 5%; +} + +a { + color: blue; + text-decoration: underline; +} +a:visited { + color: fuchsia; +} + +em { + font-style: italic; + color: navy; +} + +strong { + font-weight: bold; + color: #083194; +} + +tt { + color: navy; +} + +h1, h2, h3, h4, h5, h6 { + color: #527bbd; + font-family: sans-serif; + margin-top: 1.2em; + margin-bottom: 0.5em; + line-height: 1.3; +} + +h1, h2, h3 { + border-bottom: 2px solid silver; +} +h2 { + padding-top: 0.5em; +} +h3 { + float: left; +} +h3 + * { + clear: left; +} + +div.sectionbody { + font-family: serif; + margin-left: 0; +} + +hr { + border: 1px solid silver; +} + +p { + margin-top: 0.5em; + margin-bottom: 0.5em; +} + +ul, ol, li > p { + margin-top: 0; +} + +pre { + padding: 0; + margin: 0; +} + +span#author { + color: #527bbd; + font-family: sans-serif; + font-weight: bold; + font-size: 1.1em; +} +span#email { +} +span#revnumber, span#revdate, span#revremark { + font-family: sans-serif; +} + +div#footer { + font-family: sans-serif; + font-size: small; + border-top: 2px solid silver; + padding-top: 0.5em; + margin-top: 4.0em; +} +div#footer-text { + float: left; + padding-bottom: 0.5em; +} +div#footer-badges { + float: right; + padding-bottom: 0.5em; +} + +div#preamble { + margin-top: 1.5em; + margin-bottom: 1.5em; +} +div.tableblock, div.imageblock, div.exampleblock, div.verseblock, +div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock, +div.admonitionblock { + margin-top: 1.5em; + margin-bottom: 1.5em; +} +div.admonitionblock { + margin-top: 2.5em; + margin-bottom: 2.5em; +} + +div.content { /* Block element content. */ + padding: 0; +} + +/* Block element titles. */ +div.title, caption.title { + color: #527bbd; + font-family: sans-serif; + font-weight: bold; + text-align: left; + margin-top: 1.0em; + margin-bottom: 0.5em; +} +div.title + * { + margin-top: 0; +} + +td div.title:first-child { + margin-top: 0.0em; +} +div.content div.title:first-child { + margin-top: 0.0em; +} +div.content + div.title { + margin-top: 0.0em; +} + +div.sidebarblock > div.content { + background: #ffffee; + border: 1px solid silver; + padding: 0.5em; +} + +div.listingblock > div.content { + border: 1px solid silver; + background: #f4f4f4; + padding: 0.5em; +} + +div.quoteblock { + padding-left: 2.0em; + margin-right: 10%; +} +div.quoteblock > div.attribution { + padding-top: 0.5em; + text-align: right; +} + +div.verseblock { + padding-left: 2.0em; + margin-right: 10%; +} +div.verseblock > div.content { + white-space: pre; +} +div.verseblock > div.attribution { + padding-top: 0.75em; + text-align: left; +} +/* DEPRECATED: Pre version 8.2.7 verse style literal block. */ +div.verseblock + div.attribution { + text-align: left; +} + +div.admonitionblock .icon { + vertical-align: top; + font-size: 1.1em; + font-weight: bold; + text-decoration: underline; + color: #527bbd; + padding-right: 0.5em; +} +div.admonitionblock td.content { + padding-left: 0.5em; + border-left: 2px solid silver; +} + +div.exampleblock > div.content { + border-left: 2px solid silver; + padding: 0.5em; +} + +div.imageblock div.content { padding-left: 0; } +span.image img { border-style: none; } +a.image:visited { color: white; } + +dl { + margin-top: 0.8em; + margin-bottom: 0.8em; +} +dt { + margin-top: 0.5em; + margin-bottom: 0; + font-style: normal; + color: navy; +} +dd > *:first-child { + margin-top: 0.1em; +} + +ul, ol { + list-style-position: outside; +} +ol.arabic { + list-style-type: decimal; +} +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; +} + +div.compact ul, div.compact ol, +div.compact p, div.compact p, +div.compact div, div.compact div { + margin-top: 0.1em; + margin-bottom: 0.1em; +} + +div.tableblock > table { + border: 3px solid #527bbd; +} +thead { + font-family: sans-serif; + font-weight: bold; +} +tfoot { + font-weight: bold; +} +td > div.verse { + white-space: pre; +} +p.table { + margin-top: 0; +} +/* Because the table frame attribute is overriden by CSS in most browsers. */ +div.tableblock > table[frame="void"] { + border-style: none; +} +div.tableblock > table[frame="hsides"] { + border-left-style: none; + border-right-style: none; +} +div.tableblock > table[frame="vsides"] { + border-top-style: none; + border-bottom-style: none; +} + + +div.hdlist { + margin-top: 0.8em; + margin-bottom: 0.8em; +} +div.hdlist tr { + padding-bottom: 15px; +} +dt.hdlist1.strong, td.hdlist1.strong { + font-weight: bold; +} +td.hdlist1 { + vertical-align: top; + font-style: normal; + padding-right: 0.8em; + color: navy; +} +td.hdlist2 { + vertical-align: top; +} +div.hdlist.compact tr { + margin: 0; + padding-bottom: 0; +} + +.comment { + background: yellow; +} + +@media print { + div#footer-badges { display: none; } +} + +div#toctitle { + color: #527bbd; + font-family: sans-serif; + font-size: 1.1em; + font-weight: bold; + margin-top: 1.0em; + margin-bottom: 0.1em; +} + +div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 { + margin-top: 0; + margin-bottom: 0; +} +div.toclevel2 { + margin-left: 2em; + font-size: 0.9em; +} +div.toclevel3 { + margin-left: 4em; + font-size: 0.9em; +} +div.toclevel4 { + margin-left: 6em; + font-size: 0.9em; +} +/* Workarounds for IE6's broken and incomplete CSS2. */ + +div.sidebar-content { + background: #ffffee; + border: 1px solid silver; + padding: 0.5em; +} +div.sidebar-title, div.image-title { + color: #527bbd; + font-family: sans-serif; + font-weight: bold; + margin-top: 0.0em; + margin-bottom: 0.5em; +} + +div.listingblock div.content { + border: 1px solid silver; + background: #f4f4f4; + padding: 0.5em; +} + +div.quoteblock-attribution { + padding-top: 0.5em; + text-align: right; +} + +div.verseblock-content { + white-space: pre; +} +div.verseblock-attribution { + padding-top: 0.75em; + text-align: left; +} + +div.exampleblock-content { + border-left: 2px solid silver; + padding-left: 0.5em; +} + +/* IE6 sets dynamically generated links as visited. */ +div#toc a:visited { color: blue; } +</style> +</head> +<body> +<div id="header"> +<h1>GENIVI_CommonAPI</h1> +<span id="author">Juergen Gehring - juergen.gehring@bmw.de, Manfred Bathelt - manfred.bathelt@bmw.de</span><br /> +</div> +<h2 id="_copyright">Copyright</h2> +<div class="sectionbody"> +<div class="paragraph"><p>Copyright © 2013, GENIVI Alliance, Inc. +Copyright © 2013, BMW AG</p></div> +<div class="paragraph"><p>This file is part of GENIVI Project IPC Common API.</p></div> +<div class="paragraph"><p>Contributions are licensed to the GENIVI Alliance under one or more +Contribution License Agreements or MPL 2.0 .</p></div> +<div class="paragraph"><p>© Copyright +This Source Code Form is subject to the terms of the +Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with +this file, You can obtain one at <a href="http://mozilla.org/MPL/2.0/">http://mozilla.org/MPL/2.0/</a>.</p></div> +<div class="paragraph"><p>For further information see <a href="https://collab.genivi.org/wiki/display/genivi/SysInfraEGCommonIDLCommonAPIGuide">https://collab.genivi.org/wiki/display/genivi/SysInfraEGCommonIDLCommonAPIGuide</a></p></div> +</div> +<h2 id="_license">License</h2> +<div class="sectionbody"> +<div class="paragraph"><p>This project is licensed under MPL 2.0</p></div> +<div class="paragraph"><p>Contribution is done under GENIVI CLA or MPL2.0.</p></div> +</div> +<h2 id="_version">Version</h2> +<div class="sectionbody"> +<div class="paragraph"><p>The current version can be taken from the git.</p></div> +</div> +<h2 id="_common_api_overview">Common API Overview</h2> +<div class="sectionbody"> +<div class="paragraph"><p>Common API and its mechanism specific bindings (e.g. Common API D-Bus) provide a set of libraries and tools to work with +RPC communication in a way independent of wich mechanism is used. It consist currently consists of four subprojects:</p></div> +<div class="listingblock"> +<div class="content"> +<pre><tt>CommonAPI - This is the base C++ library, which provides the application interface for users and can + load runtime bindings such as dbus. (This is the current package.) +CommonAPI-Tools - The eclipse based tools for CommonAPI. This is essentially the code generator for + Franca -> Common API C++ code. +CommonAPI-D-Bus - This is the D-Bus binding C++ library, which provides the necesary code to communicate + over D-Bus. This is invisible to the application code, and simply needs to be linked against. +CommonAPI-D-Bus-Tools - The eclipse based tools for CommonAPI D-Bus. This is the code generator for + Franca -> Common API D-Bus C++ code.</tt></pre> +</div></div> +</div> +<h2 id="_build_instructions">Build Instructions</h2> +<div class="sectionbody"> +<div class="paragraph"><p>Use autotools to build this package:</p></div> +<div class="listingblock"> +<div class="content"> +<pre><tt># ./autoreconf -i +# ./configure +# make +# sudo make install (or alternative install process, eg. checkinstall on debian-based distributions, such as Ubuntu)</tt></pre> +</div></div> +<div class="paragraph"><p>If the environment variable GTEST_CONFIG is set to the path of the gtest-config script in a Gtest tree test will also be built.</p></div> +</div> +<h2 id="_working_on_the_code_amp_contribution">Working on the code & contribution</h2> +<div class="sectionbody"> +<div class="literalblock"> +<div class="title">First get the code from the git:</div> +<div class="content"> +<pre><tt>git clone</tt></pre> +</div></div> +<div class="literalblock"> +<div class="title">Get an overview of all branches:</div> +<div class="content"> +<pre><tt>git branch</tt></pre> +</div></div> +<div class="literalblock"> +<div class="title">Switch to the branch you want to work on (master is the feature branch) and verify that it has switched (* changed)</div> +<div class="content"> +<pre><tt>git checkout <your branch> +git branch</tt></pre> +</div></div> +<div class="literalblock"> +<div class="title">Best practice is to create a local branch based on the current branch:</div> +<div class="content"> +<pre><tt>git branch working_branch</tt></pre> +</div></div> +<div class="paragraph"><p>Start working, best practice is to commit smaller, compilable pieces during the development process that makes it easier to handle later on.</p></div> +<div class="literalblock"> +<div class="title">If you want to commit you changes, send them to the author, you can create a patch like this:</div> +<div class="content"> +<pre><tt>git format-patch working_branch <your branch></tt></pre> +</div></div> +<div class="paragraph"><p>This creates a set of patches that are published via the mailing list.The patches will be discussed and then merged & uploaded on the git by the maintainer.</p></div> +<div class="paragraph"><p>Patches can be accepted either under GENIVI Cla or MPL 2.0 (see section License). Please be sure that the signed-off-by is set correctly. For more, check out <a href="http://gerrit.googlecode.com/svn/documentation/2.0/user-signedoffby.html">http://gerrit.googlecode.com/svn/documentation/2.0/user-signedoffby.html</a></p></div> +</div> +<div id="footer"> +<div id="footer-text"> +Last updated 2013-01-21 14:49:00 CEST +</div> +</div> +</body> +</html> diff --git a/src/CommonAPI/MiddlewareInfo.h b/src/CommonAPI/MiddlewareInfo.h index 988c58c..e58ea40 100644 --- a/src/CommonAPI/MiddlewareInfo.h +++ b/src/CommonAPI/MiddlewareInfo.h @@ -1,52 +1,52 @@ -/* Copyright (C) 2013 BMW Group
- * Author: Manfred Bathelt (manfred.bathelt@bmw.de)
- * Author: Juergen Gehring (juergen.gehring@bmw.de)
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-#ifndef MIDDLEWAREINFO_H_
-#define MIDDLEWAREINFO_H_
-
-
-#include <memory>
-#include <cstring>
-
-
-namespace CommonAPI {
-
-
-class Runtime;
-
-
-inline int FNV1aHash(const char* s) {
- const int FNV_offset_basis = 2166136261;
- const int FNV_prime = 16777619;
-
- int hashValue = FNV_offset_basis;
- for (int i = 0; i < strlen(s); i++) {
- hashValue = (hashValue ^ s[i]) * FNV_prime;
- }
- return hashValue;
-}
-
-
-typedef std::shared_ptr<Runtime> (*MiddlewareRuntimeLoadFunction) ();
-
-
-struct MiddlewareInfo {
- const int middlewareId;
- const char* middlewareName_;
- MiddlewareRuntimeLoadFunction getInstance;
-
- MiddlewareInfo(const char* middlewareName, MiddlewareRuntimeLoadFunction middlewareRuntimeLoadFunction):
- middlewareName_(middlewareName),
- middlewareId(FNV1aHash(middlewareName)),
- getInstance(middlewareRuntimeLoadFunction) {
-}
-};
-
-
-} // namespace CommonAPI
-
-
-#endif /* MIDDLEWAREINFO_H_ */
+/* Copyright (C) 2013 BMW Group + * Author: Manfred Bathelt (manfred.bathelt@bmw.de) + * Author: Juergen Gehring (juergen.gehring@bmw.de) + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +#ifndef MIDDLEWAREINFO_H_ +#define MIDDLEWAREINFO_H_ + + +#include <memory> +#include <cstring> + + +namespace CommonAPI { + + +class Runtime; + + +inline int FNV1aHash(const char* s) { + const int FNV_offset_basis = 2166136261; + const int FNV_prime = 16777619; + + int hashValue = FNV_offset_basis; + for (int i = 0; i < strlen(s); i++) { + hashValue = (hashValue ^ s[i]) * FNV_prime; + } + return hashValue; +} + + +typedef std::shared_ptr<Runtime> (*MiddlewareRuntimeLoadFunction) (); + + +struct MiddlewareInfo { + const int middlewareId; + const char* middlewareName_; + MiddlewareRuntimeLoadFunction getInstance; + + MiddlewareInfo(const char* middlewareName, MiddlewareRuntimeLoadFunction middlewareRuntimeLoadFunction): + middlewareName_(middlewareName), + middlewareId(FNV1aHash(middlewareName)), + getInstance(middlewareRuntimeLoadFunction) { +} +}; + + +} // namespace CommonAPI + + +#endif /* MIDDLEWAREINFO_H_ */ diff --git a/src/CommonAPI/Runtime.cpp b/src/CommonAPI/Runtime.cpp index 156bdd0..2ab8bf7 100644 --- a/src/CommonAPI/Runtime.cpp +++ b/src/CommonAPI/Runtime.cpp @@ -1,56 +1,56 @@ -/* Copyright (C) 2013 BMW Group
- * Author: Manfred Bathelt (manfred.bathelt@bmw.de)
- * Author: Juergen Gehring (juergen.gehring@bmw.de)
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-#include "Runtime.h"
-
-#include <iostream>
-
-
-namespace CommonAPI {
-
-
-std::unordered_map<std::string, MiddlewareRuntimeLoadFunction>* registeredRuntimeLoadFunctions_;
-
-
-void Runtime::registerRuntimeLoader(std::string middlewareName, MiddlewareRuntimeLoadFunction middlewareRuntimeLoadFunction) {
- if(!registeredRuntimeLoadFunctions_) {
- registeredRuntimeLoadFunctions_ = new std::unordered_map<std::string, MiddlewareRuntimeLoadFunction>();
- }
- registeredRuntimeLoadFunctions_->insert({middlewareName, middlewareRuntimeLoadFunction});
-}
-
-
-std::shared_ptr<Runtime> Runtime::load() {
- if(!registeredRuntimeLoadFunctions_) {
- registeredRuntimeLoadFunctions_ = new std::unordered_map<std::string, MiddlewareRuntimeLoadFunction> {};
- }
-
- auto begin = registeredRuntimeLoadFunctions_->begin();
-
- if (begin != registeredRuntimeLoadFunctions_->end()) {
- return (begin->second)();
- }
-
- return std::shared_ptr<Runtime>(NULL);
-}
-
-
-std::shared_ptr<Runtime> Runtime::load(const std::string& middlewareName) {
- if(!registeredRuntimeLoadFunctions_) {
- registeredRuntimeLoadFunctions_ = new std::unordered_map<std::string, MiddlewareRuntimeLoadFunction> {};
- }
-
- for (auto it = registeredRuntimeLoadFunctions_->begin(); it != registeredRuntimeLoadFunctions_->end(); ++it) {
- if(it->first == middlewareName) {
- return (it->second)();
- }
- }
-
- return std::shared_ptr<Runtime>(NULL);
-}
-
-
-}
+/* Copyright (C) 2013 BMW Group + * Author: Manfred Bathelt (manfred.bathelt@bmw.de) + * Author: Juergen Gehring (juergen.gehring@bmw.de) + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +#include "Runtime.h" + +#include <iostream> + + +namespace CommonAPI { + + +std::unordered_map<std::string, MiddlewareRuntimeLoadFunction>* registeredRuntimeLoadFunctions_; + + +void Runtime::registerRuntimeLoader(std::string middlewareName, MiddlewareRuntimeLoadFunction middlewareRuntimeLoadFunction) { + if(!registeredRuntimeLoadFunctions_) { + registeredRuntimeLoadFunctions_ = new std::unordered_map<std::string, MiddlewareRuntimeLoadFunction>(); + } + registeredRuntimeLoadFunctions_->insert({middlewareName, middlewareRuntimeLoadFunction}); +} + + +std::shared_ptr<Runtime> Runtime::load() { + if(!registeredRuntimeLoadFunctions_) { + registeredRuntimeLoadFunctions_ = new std::unordered_map<std::string, MiddlewareRuntimeLoadFunction> {}; + } + + auto begin = registeredRuntimeLoadFunctions_->begin(); + + if (begin != registeredRuntimeLoadFunctions_->end()) { + return (begin->second)(); + } + + return std::shared_ptr<Runtime>(NULL); +} + + +std::shared_ptr<Runtime> Runtime::load(const std::string& middlewareName) { + if(!registeredRuntimeLoadFunctions_) { + registeredRuntimeLoadFunctions_ = new std::unordered_map<std::string, MiddlewareRuntimeLoadFunction> {}; + } + + for (auto it = registeredRuntimeLoadFunctions_->begin(); it != registeredRuntimeLoadFunctions_->end(); ++it) { + if(it->first == middlewareName) { + return (it->second)(); + } + } + + return std::shared_ptr<Runtime>(NULL); +} + + +} diff --git a/src/CommonAPI/Runtime.h b/src/CommonAPI/Runtime.h index f73dfcf..92cf736 100644 --- a/src/CommonAPI/Runtime.h +++ b/src/CommonAPI/Runtime.h @@ -1,43 +1,43 @@ -/* Copyright (C) 2013 BMW Group
- * Author: Manfred Bathelt (manfred.bathelt@bmw.de)
- * Author: Juergen Gehring (juergen.gehring@bmw.de)
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-#ifndef COMMONAPI_RUNTIME_H_
-#define COMMONAPI_RUNTIME_H_
-
-
-#include "MiddlewareInfo.h"
-#include "Factory.h"
-
-#include <memory>
-#include <fstream>
-#include <unordered_map>
-#include <dlfcn.h>
-#include <string>
-#include <cassert>
-#include <cstring>
-
-
-namespace CommonAPI {
-
-
-class Factory;
-class Runtime;
-
-
-class Runtime {
- public:
- static std::shared_ptr<Runtime> load();
- static std::shared_ptr<Runtime> load(const std::string& middlewareId);
- static void registerRuntimeLoader(std::string middlewareName, MiddlewareRuntimeLoadFunction middlewareRuntimeLoadFunction);
-
- virtual ~Runtime() {}
- virtual std::shared_ptr<Factory> createFactory() = 0;
-};
-
-
-} // namespace CommonAPI
-
-#endif // COMMONAPI_RUNTIME_H_
+/* Copyright (C) 2013 BMW Group + * Author: Manfred Bathelt (manfred.bathelt@bmw.de) + * Author: Juergen Gehring (juergen.gehring@bmw.de) + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +#ifndef COMMONAPI_RUNTIME_H_ +#define COMMONAPI_RUNTIME_H_ + + +#include "MiddlewareInfo.h" +#include "Factory.h" + +#include <memory> +#include <fstream> +#include <unordered_map> +#include <dlfcn.h> +#include <string> +#include <cassert> +#include <cstring> + + +namespace CommonAPI { + + +class Factory; +class Runtime; + + +class Runtime { + public: + static std::shared_ptr<Runtime> load(); + static std::shared_ptr<Runtime> load(const std::string& middlewareId); + static void registerRuntimeLoader(std::string middlewareName, MiddlewareRuntimeLoadFunction middlewareRuntimeLoadFunction); + + virtual ~Runtime() {} + virtual std::shared_ptr<Factory> createFactory() = 0; +}; + + +} // namespace CommonAPI + +#endif // COMMONAPI_RUNTIME_H_ diff --git a/src/CommonAPI/Stub.h b/src/CommonAPI/Stub.h index 44cadf9..7353f54 100644 --- a/src/CommonAPI/Stub.h +++ b/src/CommonAPI/Stub.h @@ -1,44 +1,44 @@ -/* Copyright (C) 2013 BMW Group
- * Author: Manfred Bathelt (manfred.bathelt@bmw.de)
- * Author: Juergen Gehring (juergen.gehring@bmw.de)
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-#ifndef COMMONAPI_STUB_H_
-#define COMMONAPI_STUB_H_
-
-#include <memory>
-#include <string>
-#include <type_traits>
-
-namespace CommonAPI {
-
-class StubAdapter {
- public:
- virtual ~StubAdapter() { }
-
- virtual const std::string getAddress() const = 0;
- virtual const std::string& getDomain() const = 0;
- virtual const std::string& getServiceId() const = 0;
- virtual const std::string& getInstanceId() const = 0;
-};
-
-struct StubBase {
- virtual ~StubBase() {}
-};
-
-template <typename _StubAdapter, typename _StubRemoteEventHandler>
-class Stub : public StubBase {
- static_assert(std::is_base_of<StubAdapter, _StubAdapter>::value, "Invalid StubAdapter Class!");
- public:
- typedef _StubAdapter StubAdapterType;
- typedef _StubRemoteEventHandler RemoteEventHandlerType;
-
- virtual ~Stub() { }
-
- virtual _StubRemoteEventHandler* initStubAdapter(const std::shared_ptr<_StubAdapter>& stubAdapter) = 0;
-};
-
-} // namespace CommonAPI
-
-#endif // COMMONAPI_STUB_H_
+/* Copyright (C) 2013 BMW Group + * Author: Manfred Bathelt (manfred.bathelt@bmw.de) + * Author: Juergen Gehring (juergen.gehring@bmw.de) + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +#ifndef COMMONAPI_STUB_H_ +#define COMMONAPI_STUB_H_ + +#include <memory> +#include <string> +#include <type_traits> + +namespace CommonAPI { + +class StubAdapter { + public: + virtual ~StubAdapter() { } + + virtual const std::string getAddress() const = 0; + virtual const std::string& getDomain() const = 0; + virtual const std::string& getServiceId() const = 0; + virtual const std::string& getInstanceId() const = 0; +}; + +struct StubBase { + virtual ~StubBase() {} +}; + +template <typename _StubAdapter, typename _StubRemoteEventHandler> +class Stub : public StubBase { + static_assert(std::is_base_of<StubAdapter, _StubAdapter>::value, "Invalid StubAdapter Class!"); + public: + typedef _StubAdapter StubAdapterType; + typedef _StubRemoteEventHandler RemoteEventHandlerType; + + virtual ~Stub() { } + + virtual _StubRemoteEventHandler* initStubAdapter(const std::shared_ptr<_StubAdapter>& stubAdapter) = 0; +}; + +} // namespace CommonAPI + +#endif // COMMONAPI_STUB_H_ |