blob: 689f92d37db24f4bb66419bfa251e313d2235e0b [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.18"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Celix: celix_service_registration_options Struct Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Celix
&#160;<span id="projectnumber">2.2.1</span>
</div>
<div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.18 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-attribs">Public Attributes</a> &#124;
<a href="structcelix__service__registration__options-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">celix_service_registration_options Struct Reference</div> </div>
</div><!--header-->
<div class="contents">
<p><code>#include &lt;<a class="el" href="celix__bundle__context_8h_source.html">celix_bundle_context.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
Public Attributes</h2></td></tr>
<tr class="memitem:a9c24c1179305b68840149449b1fa6d87"><td class="memItemLeft" align="right" valign="top">void *svc&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcelix__service__registration__options.html#a9c24c1179305b68840149449b1fa6d87">OPTS_INIT</a></td></tr>
<tr class="separator:a9c24c1179305b68840149449b1fa6d87"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a94eb8e6e1af0cca435d99aa5d2457fca"><td class="memItemLeft" align="right" valign="top">celix_service_factory_t *factory&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcelix__service__registration__options.html#a94eb8e6e1af0cca435d99aa5d2457fca">OPTS_INIT</a></td></tr>
<tr class="separator:a94eb8e6e1af0cca435d99aa5d2457fca"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a86179f0c7a032f3309440a2cd8d91a61"><td class="memItemLeft" align="right" valign="top">const char *serviceName&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcelix__service__registration__options.html#a86179f0c7a032f3309440a2cd8d91a61">OPTS_INIT</a></td></tr>
<tr class="separator:a86179f0c7a032f3309440a2cd8d91a61"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6e1274cc3b190b3dc05c7c145f57d407"><td class="memItemLeft" align="right" valign="top">celix_properties_t *properties&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcelix__service__registration__options.html#a6e1274cc3b190b3dc05c7c145f57d407">OPTS_INIT</a></td></tr>
<tr class="separator:a6e1274cc3b190b3dc05c7c145f57d407"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae44ee7cc15427e406a67b0396201700c"><td class="memItemLeft" align="right" valign="top">const char *serviceLanguage&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcelix__service__registration__options.html#ae44ee7cc15427e406a67b0396201700c">OPTS_INIT</a></td></tr>
<tr class="separator:ae44ee7cc15427e406a67b0396201700c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af9b1a622c06a3053ed3917649241fc23"><td class="memItemLeft" align="right" valign="top">const char *serviceVersion&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcelix__service__registration__options.html#af9b1a622c06a3053ed3917649241fc23">OPTS_INIT</a></td></tr>
<tr class="separator:af9b1a622c06a3053ed3917649241fc23"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Service Registration Options when registering services to the Celix framework. </p>
</div><h2 class="groupheader">Member Data Documentation</h2>
<a id="a9c24c1179305b68840149449b1fa6d87"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9c24c1179305b68840149449b1fa6d87">&#9670;&nbsp;</a></span>OPTS_INIT <span class="overload">[1/6]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void* svc celix_service_registration_options::OPTS_INIT</td>
</tr>
</table>
</div><div class="memdoc">
<p>The service pointer. The actual pointer to the service. For C this is normally a pointer to a struct with function pointers, but theoretically this can be a pointer to anything (e.g. a pointer to a single function, or a pointer to a C++ interface implementation, or just a pointer to a data structure).</p>
<p>The bundle is responsible to keep the service pointer valid as long as it is registered in the Celix framework. </p>
</div>
</div>
<a id="a94eb8e6e1af0cca435d99aa5d2457fca"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a94eb8e6e1af0cca435d99aa5d2457fca">&#9670;&nbsp;</a></span>OPTS_INIT <span class="overload">[2/6]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">celix_service_factory_t* factory celix_service_registration_options::OPTS_INIT</td>
</tr>
</table>
</div><div class="memdoc">
<p>The service factory pointer. Note if the factory service is set, the svc field will not be used.</p>
<p>The service factory will be called for every bundle requesting/de-requesting a service. This gives the provider the option to create bundle specific service instances.</p>
<p>When a service is requested for a bundle the getService of the factory service will be called. This function must return a valid pointer to a service conform the registered service name or NULL. When a service in no longer needed for a bundle (e.g. ending the useService(s) calls when a service tacker is stopped) the ungetService function of the service factory will be called.</p>
<p>The bundle is responsible to keep the service factory pointer valid as long as it is registered in the Celix framework. </p>
</div>
</div>
<a id="a86179f0c7a032f3309440a2cd8d91a61"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a86179f0c7a032f3309440a2cd8d91a61">&#9670;&nbsp;</a></span>OPTS_INIT <span class="overload">[3/6]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const char* serviceName celix_service_registration_options::OPTS_INIT</td>
</tr>
</table>
</div><div class="memdoc">
<p>The required service name. This is used to identify the service. A fully qualified name with a namespace is advisable to prevent name collision. (e.g. EXAMPLE_PRESSURE_SENSOR). </p>
</div>
</div>
<a id="a6e1274cc3b190b3dc05c7c145f57d407"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6e1274cc3b190b3dc05c7c145f57d407">&#9670;&nbsp;</a></span>OPTS_INIT <span class="overload">[4/6]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">celix_properties_t* properties celix_service_registration_options::OPTS_INIT</td>
</tr>
</table>
</div><div class="memdoc">
<p>The optional service properties. These contain meta information about the service in the form of string key/values. (e.g. the location of a pressure sensor: location=left-tire).</p>
<p>When a service is registered the Celix framework will take ownership of the provided properties. If a registration fails, the properties will be destroyed (freed) by the Celix framework. </p>
</div>
</div>
<a id="ae44ee7cc15427e406a67b0396201700c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae44ee7cc15427e406a67b0396201700c">&#9670;&nbsp;</a></span>OPTS_INIT <span class="overload">[5/6]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const char* serviceLanguage celix_service_registration_options::OPTS_INIT</td>
</tr>
</table>
</div><div class="memdoc">
<p>The optional service language. If this is NULL, CELIX_FRAMEWORK_SERVICE_LANGUAGE_C is used. </p>
</div>
</div>
<a id="af9b1a622c06a3053ed3917649241fc23"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af9b1a622c06a3053ed3917649241fc23">&#9670;&nbsp;</a></span>OPTS_INIT <span class="overload">[6/6]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">const char* serviceVersion celix_service_registration_options::OPTS_INIT</td>
</tr>
</table>
</div><div class="memdoc">
<p>The optional service version (in the form of &lt;MAJOR&gt;.&lt;MINOR&gt;.&lt;MICRO&gt;.&lt;QUALIFIER&gt;). If present consumer of the service can specific which service version range of a specific service they are interested in. Note that it is the responsibility of the users to ensure that service in those version range are compatible (binary of source). It is advisable to use semantic versioning for this. </p>
</div>
</div>
<hr/>The documentation for this struct was generated from the following file:<ul>
<li>libs/framework/include/<a class="el" href="celix__bundle__context_8h_source.html">celix_bundle_context.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.18
</small></address>
</body>
</html>