blob: 6eb2a86d3b4af7c18a0e312c9045b660a1dc3cc4 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en" dir="ltr" class="client-nojs">
<head>
<meta charset="UTF-8" />
<title>SMILA/Project Concepts/Connectivity - Eclipsepedia</title>
<meta http-equiv="X-UA-Compatible" content="IE=EDGE" />
<meta name="generator" content="MediaWiki 1.23.2" />
<link rel="shortcut icon" href="http://wiki.eclipse.org/eclipse.org-common/themes/solstice/public/images/favicon.ico" />
<link rel="search" type="application/opensearchdescription+xml" href="http://wiki.eclipse.org/opensearch_desc.php" title="Eclipsepedia (en)" />
<link rel="EditURI" type="application/rsd+xml" href="http://wiki.eclipse.org/api.php?action=rsd" />
<link rel="alternate" type="application/atom+xml" title="Eclipsepedia Atom feed" href="http://wiki.eclipse.org/index.php?title=Special:RecentChanges&amp;feed=atom" />
<link rel="stylesheet" href="http://wiki.eclipse.org/load.php?debug=false&amp;lang=en&amp;modules=mediawiki.legacy.commonPrint%2Cshared%7Cmediawiki.ui.button&amp;only=styles&amp;skin=solstice&amp;*" />
<link rel="stylesheet" href="http://wiki.eclipse.org/skins/solstice/public/stylesheets/styles.min.css?303" media="screen, print" /><meta name="ResourceLoaderDynamicStyles" content="" />
<style>a:lang(ar),a:lang(kk-arab),a:lang(mzn),a:lang(ps),a:lang(ur){text-decoration:none}
/* cache key: my_wiki:resourceloader:filter:minify-css:7:14ece53a42aa314864e5fd8c57f0d98f */</style>
<script src="http://wiki.eclipse.org/load.php?debug=false&amp;lang=en&amp;modules=startup&amp;only=scripts&amp;skin=solstice&amp;*"></script>
<script>if(window.mw){
mw.config.set({"wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"SMILA/Project_Concepts/Connectivity","wgTitle":"SMILA/Project Concepts/Connectivity","wgCurRevisionId":113296,"wgRevisionId":113296,"wgArticleId":15224,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":[],"wgBreakFrames":false,"wgPageContentLanguage":"en","wgPageContentModel":"wikitext","wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"dmy","wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgMonthNamesShort":["","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"wgRelevantPageName":"SMILA/Project_Concepts/Connectivity","wgIsProbablyEditable":false,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgWikiEditorEnabledModules":{"toolbar":false,"dialogs":false,"hidesig":true,"preview":false,"previewDialog":false,"publish":false},"wgCategoryTreePageCategoryOptions":"{\"mode\":0,\"hideprefix\":20,\"showcount\":true,\"namespaces\":false}"});
}</script><script>if(window.mw){
mw.loader.implement("user.options",function($,jQuery){mw.user.options.set({"ccmeonemails":0,"cols":80,"date":"default","diffonly":0,"disablemail":0,"editfont":"default","editondblclick":0,"editsectiononrightclick":0,"enotifminoredits":0,"enotifrevealaddr":0,"enotifusertalkpages":1,"enotifwatchlistpages":1,"extendwatchlist":0,"fancysig":0,"forceeditsummary":0,"gender":"unknown","hideminor":0,"hidepatrolled":0,"imagesize":2,"math":1,"minordefault":0,"newpageshidepatrolled":0,"nickname":"","norollbackdiff":0,"numberheadings":0,"previewonfirst":0,"previewontop":1,"rcdays":7,"rclimit":50,"rows":25,"showhiddencats":0,"shownumberswatching":1,"showtoolbar":1,"skin":"solstice","stubthreshold":0,"thumbsize":2,"underline":2,"uselivepreview":0,"usenewrc":0,"watchcreations":1,"watchdefault":1,"watchdeletion":0,"watchlistdays":3,"watchlisthideanons":0,"watchlisthidebots":0,"watchlisthideliu":0,"watchlisthideminor":0,"watchlisthideown":0,"watchlisthidepatrolled":0,"watchmoves":0,"wllimit":250,
"useeditwarning":1,"prefershttps":1,"language":"en","variant-gan":"gan","variant-iu":"iu","variant-kk":"kk","variant-ku":"ku","variant-shi":"shi","variant-sr":"sr","variant-tg":"tg","variant-uz":"uz","variant-zh":"zh","searchNs0":true,"searchNs1":false,"searchNs2":false,"searchNs3":false,"searchNs4":false,"searchNs5":false,"searchNs6":false,"searchNs7":false,"searchNs8":false,"searchNs9":false,"searchNs10":false,"searchNs11":false,"searchNs12":false,"searchNs13":false,"searchNs14":false,"searchNs15":false,"variant":"en"});},{},{});mw.loader.implement("user.tokens",function($,jQuery){mw.user.tokens.set({"editToken":"+\\","patrolToken":false,"watchToken":false});},{},{});
/* cache key: my_wiki:resourceloader:filter:minify-js:7:70d74423d3fc1e1c18fa9a1ff645a84a */
}</script>
<script>if(window.mw){
mw.loader.load(["mediawiki.page.startup","mediawiki.legacy.wikibits","mediawiki.legacy.ajax"]);
}</script>
<style type="text/css">/*<![CDATA[*/
.source-java {line-height: normal;}
.source-java li, .source-java pre {
line-height: normal; border: 0px none white;
}
/**
* GeSHi Dynamically Generated Stylesheet
* --------------------------------------
* Dynamically generated stylesheet for java
* CSS class: source-java, CSS id:
* GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
* (http://qbnz.com/highlighter/ and http://geshi.org/)
* --------------------------------------
*/
.java.source-java .de1, .java.source-java .de2 {font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;}
.java.source-java {font-family:monospace;}
.java.source-java .imp {font-weight: bold; color: red;}
.java.source-java li, .java.source-java .li1 {font-weight: normal; vertical-align:top;}
.java.source-java .ln {width:1px;text-align:right;margin:0;padding:0 2px;vertical-align:top;}
.java.source-java .li2 {font-weight: bold; vertical-align:top;}
.java.source-java .kw1 {color: #7F0055; font-weight: bold;}
.java.source-java .kw2 {color: #7F0055; font-weight: bold;}
.java.source-java .kw3 {color: #000000; font-weight: normal}
.java.source-java .kw4 {color: #7F0055; font-weight: bold;}
.java.source-java .co1 {color: #3F7F5F; font-style: italic;}
.java.source-java .co2 {color: #3F7F5F;}
.java.source-java .co3 {color: #3F7F5F; font-style: italic; font-weight: bold;}
.java.source-java .coMULTI {color: #3F5FBF; font-style: italic;}
.java.source-java .es0 {color: #000000;}
.java.source-java .br0 {color: #000000;}
.java.source-java .sy0 {color: #000000;}
.java.source-java .st0 {color: #2A00ff;}
.java.source-java .nu0 {color: #000000;}
.java.source-java .me1 {color: #000000;}
.java.source-java .me2 {color: #000000;}
.java.source-java .ln-xtra, .java.source-java li.ln-xtra, .java.source-java div.ln-xtra {background-color: #ffc;}
.java.source-java span.xtra { display:block; }
/*]]>*/
</style><meta name="viewport" content="width=device-width, initial-scale=1.0"></head>
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-SMILA_Project_Concepts_Connectivity skin-solstice action-view" id="solstice">
<a class="sr-only" href="Connectivity.html#content">Skip to main content</a>
<div class="thin-header">
<header role="banner" class="hidden-print noprint">
<div class="container-fluid">
<div id="row-logo-search">
<div id="header-left">
<div class="row">
<div class="hidden-xs col-sm-6 logo-container">
<a href="https://www.eclipse.org/" ><img class="logo-eclipse-default" src="http://wiki.eclipse.org/skins/solstice/public/images/logo/eclipse-800x188.png" alt="Eclipsepedia"></a>
</div>
<div class="navbar col-sm-18 yamm" id="main-menu">
<div class="navbar-collapse collapse" id="navbar-collapse-1">
<ul class="nav navbar-nav">
<li><a target="_self" href="https://eclipse.org/downloads/">Download</a></li>
<li><a target="_self" href="https://eclipse.org/users/">Getting Started </a></li>
<li><a target="_self" href="https://eclipse.org/membership/">Members</a></li>
<li><a target="_self" href="https://eclipse.org/projects/">Projects</a></li>
<li class="dropdown visible-xs"><a class="dropdown-toggle" data-toggle="dropdown" href="Connectivity.html#">Community <b class="caret"></b></a><ul class="dropdown-menu"><li><a href="http://marketplace.eclipse.org">Marketplace</a></li><li><a href="http://events.eclipse.org">Events</a></li><li><a href="http://www.planeteclipse.org/">Planet Eclipse</a></li><li><a href="https://eclipse.org/community/eclipse_newsletter/">Newsletter</a></li><li><a href="https://www.youtube.com/user/EclipseFdn">Videos</a></li></ul></li><li class="dropdown visible-xs"><a class="dropdown-toggle" data-toggle="dropdown" href="Connectivity.html#">Participate <b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://bugs.eclipse.org/bugs/">Report a Bug</a></li><li><a href="https://eclipse.org/forums/">Forums</a></li><li><a href="https://eclipse.org/mail/">Mailing Lists</a></li><li><a href="https://wiki.eclipse.org/">Wiki</a></li><li><a href="https://wiki.eclipse.org/IRC">IRC</a></li><li><a href="https://eclipse.org/contribute/">How to Contribute</a></li></ul></li><li class="dropdown visible-xs"><a class="dropdown-toggle" data-toggle="dropdown" href="Connectivity.html#">Working Groups <b class="caret"></b></a><ul class="dropdown-menu"><li><a href="http://wiki.eclipse.org/Auto_IWG">Automotive</a></li><li><a href="http://iot.eclipse.org">Internet of Things</a></li><li><a href="http://locationtech.org">LocationTech</a></li><li><a href="http://lts.eclipse.org">Long-Term Support</a></li><li><a href="http://polarsys.org">PolarSys</a></li><li><a href="http://science.eclipse.org">Science</a></li><li><a href="http://openmdm.org">OpenMDM</a></li></ul></li><!-- More -->
<li class="dropdown hidden-xs"><a class="dropdown-toggle" data-toggle="dropdown">More<b class="caret"></b></a>
<ul class="dropdown-menu">
<li>
<!-- Content container to add padding -->
<div class="yamm-content">
<div class="row">
<ul class="col-sm-8 list-unstyled"><li><p><strong>Community</strong></p></li><li><a href="http://marketplace.eclipse.org">Marketplace</a></li><li><a href="http://events.eclipse.org">Events</a></li><li><a href="http://www.planeteclipse.org/">Planet Eclipse</a></li><li><a href="https://eclipse.org/community/eclipse_newsletter/">Newsletter</a></li><li><a href="https://www.youtube.com/user/EclipseFdn">Videos</a></li></ul><ul class="col-sm-8 list-unstyled"><li><p><strong>Participate</strong></p></li><li><a href="https://bugs.eclipse.org/bugs/">Report a Bug</a></li><li><a href="https://eclipse.org/forums/">Forums</a></li><li><a href="https://eclipse.org/mail/">Mailing Lists</a></li><li><a href="https://wiki.eclipse.org/">Wiki</a></li><li><a href="https://wiki.eclipse.org/IRC">IRC</a></li><li><a href="https://eclipse.org/contribute/">How to Contribute</a></li></ul><ul class="col-sm-8 list-unstyled"><li><p><strong>Working Groups</strong></p></li><li><a href="http://wiki.eclipse.org/Auto_IWG">Automotive</a></li><li><a href="http://iot.eclipse.org">Internet of Things</a></li><li><a href="http://locationtech.org">LocationTech</a></li><li><a href="http://lts.eclipse.org">Long-Term Support</a></li><li><a href="http://polarsys.org">PolarSys</a></li><li><a href="http://science.eclipse.org">Science</a></li><li><a href="http://openmdm.org">OpenMDM</a></li></ul> </div>
</div>
</li>
</ul>
</li>
</ul>
</div>
<div class="navbar-header">
<button data-target="#navbar-collapse-1" data-toggle="collapse" class="navbar-toggle" type="button">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a href="https://www.eclipse.org/" class="visible-xs navbar-brand"><img class="logo-eclipse-default" src="http://wiki.eclipse.org/skins/solstice/public/images/logo/eclipse-800x188.png" alt="Eclipsepedia" width="174"></a>
</div>
</div>
</div>
</div>
</div>
</div>
</header>
<section class="defaut-breadcrumbs hidden-print noprint hidden-print clearfix" id="breadcrumb">
<div>
<ol class="breadcrumb">
<li><a href="https://www.eclipse.org/">Home</a></li>
<li><a href="http://wiki.eclipse.org/Main_Page">Eclipse Wiki</a></li>
<li class="active">SMILA/Project Concepts/Connectivity</li></ol>
</div>
</section>
</div>
<div class="toolbar-menu breadcrumbs-offset noprint hidden-print margin-bottom-0 clearfix">
<div class="col-md-24">
<ol class="breadcrumb" role="navigation">
<li id="pt-login">
<a href="http://wiki.eclipse.org/index.php?title=Special:UserLogin&amp;returnto=SMILA%2FProject+Concepts%2FConnectivity">
<i class="fa fa-sign-in fa-fw orange"></i> Log in </a>
</li>
</ul>
</div>
</div>
<main role="main" class="background-grey">
<div class="container-full padding-top-25">
<!-- content -->
<section id="content" class="mw-body container-full clearfix 0">
<div id="mw-js-message" style="display:none;"></div>
<!-- bodyContent -->
<div id="bodyContent">
<!-- jumpto -->
<div id="jump-to-nav" class="mw-jump">
Jump to: <a href="Connectivity.html#mw-head">navigation</a>,
<a href="Connectivity.html#p-search">search</a>
</div>
<!-- /jumpto -->
<!-- leftcol -->
<aside class="col-md-4 noprint hidden-print" id="leftcol">
<form class="input-group" role="form" id="form-eclipse-search" action="http://wiki.eclipse.org/index.php" id="searchform">
<input id="searchInput" class="search-query form-control" type="search" accesskey="f" title="Special:Search" placeholder="Search" name="search" value="">
<span class="input-group-btn">
<button value="search" id="mw-searchButton" type="submit" class="btn btn-default" title="Search the pages for this text" name="fulltext">
<i class="fa fa-search"></i>
</button>
</span>
</form>
<select class="form-control margin-top-10 margin-bottom-10 visible-xs visible-sm" onchange="this.options[this.selectedIndex].value && (window.location = this.options[this.selectedIndex].value);"><option class="fw-700 "><span class="fw-700">---Navigation---</span></option><option value="/Main_Page">Main Page</option><option value="/Eclipsepedia:Community_portal">Community portal</option><option value="/Eclipsepedia:Current_events">Current events</option><option value="/Special:RecentChanges">Recent changes</option><option value="/Special:Random">Random page</option><option value="https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents">Help</option></select><ul class="ul-left-nav fa-ul hidden-print leftnav hidden-xs hidden-sm"><li class="separator"><span class="separator">Navigation</span></li> <li class=""><i class="fa fa-angle-double-right orange fa-fw"></i> <a href="http://wiki.eclipse.org/Main_Page" id="n-mainpage" title="Visit the main page [z]" accesskey="z">Main Page</a></li> <li class=""><i class="fa fa-angle-double-right orange fa-fw"></i> <a href="http://wiki.eclipse.org/Eclipsepedia:Community_portal" id="n-portal" title="About the project, what you can do, where to find things">Community portal</a></li> <li class=""><i class="fa fa-angle-double-right orange fa-fw"></i> <a href="http://wiki.eclipse.org/Eclipsepedia:Current_events" id="n-currentevents" title="Find background information on current events">Current events</a></li> <li class=""><i class="fa fa-angle-double-right orange fa-fw"></i> <a href="http://wiki.eclipse.org/Special:RecentChanges" id="n-recentchanges" title="A list of recent changes in the wiki [r]" accesskey="r">Recent changes</a></li> <li class=""><i class="fa fa-angle-double-right orange fa-fw"></i> <a href="http://wiki.eclipse.org/Special:Random" id="n-randompage" title="Load a random page [x]" accesskey="x">Random page</a></li> <li class=""><i class="fa fa-angle-double-right orange fa-fw"></i> <a href="https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents" id="n-help" title="The place to find out">Help</a></li></ul> <select class="form-control margin-top-10 margin-bottom-10 visible-xs visible-sm" onchange="this.options[this.selectedIndex].value && (window.location = this.options[this.selectedIndex].value);"><option class="fw-700 "><span class="fw-700">---Toolbox---</span></option><option value="/index.php?title=SMILA/Project_Concepts/Connectivity&amp;action=info">Page information</option><option value="/index.php?title=SMILA/Project_Concepts/Connectivity&amp;oldid=113296">Permanent link</option><option value="/index.php?title=SMILA/Project_Concepts/Connectivity&amp;printable=yes">Printable version</option><option value="/Special:SpecialPages">Special pages</option><option value="/Special:RecentChangesLinked/SMILA/Project_Concepts/Connectivity">Related changes</option><option value="/Special:WhatLinksHere/SMILA/Project_Concepts/Connectivity">What links here</option></select><ul class="ul-left-nav fa-ul hidden-print leftnav hidden-xs hidden-sm"><li class="separator"><span class="separator">Toolbox</span></li><li><i class="fa fa-angle-double-right orange fa-fw"></i> <a href="http://wiki.eclipse.org/index.php?title=SMILA/Project_Concepts/Connectivity&amp;action=info" id="t-info">Page information</a></li><li><i class="fa fa-angle-double-right orange fa-fw"></i> <a href="http://wiki.eclipse.org/index.php?title=SMILA/Project_Concepts/Connectivity&amp;oldid=113296" id="t-permalink" title="Permanent link to this revision of the page">Permanent link</a></li><li><i class="fa fa-angle-double-right orange fa-fw"></i> <a href="http://wiki.eclipse.org/index.php?title=SMILA/Project_Concepts/Connectivity&amp;printable=yes" id="t-print" rel="alternate" title="Printable version of this page [p]" accesskey="p">Printable version</a></li><li><i class="fa fa-angle-double-right orange fa-fw"></i> <a href="http://wiki.eclipse.org/Special:SpecialPages" id="t-specialpages" title="A list of all special pages [q]" accesskey="q">Special pages</a></li><li><i class="fa fa-angle-double-right orange fa-fw"></i> <a href="http://wiki.eclipse.org/Special:RecentChangesLinked/SMILA/Project_Concepts/Connectivity" id="t-recentchangeslinked" title="Recent changes in pages linked from this page [k]" accesskey="k">Related changes</a></li><li><i class="fa fa-angle-double-right orange fa-fw"></i> <a href="http://wiki.eclipse.org/Special:WhatLinksHere/SMILA/Project_Concepts/Connectivity" id="t-whatlinkshere" title="A list of all wiki pages that link here [j]" accesskey="j">What links here</a></li></ul> </aside>
<!-- /leftcol -->
<!-- mainContent -->
<div id="mainContent" class="col-md-20">
<ul class="nav nav-tabs noprint hidden-print" role="tablist">
<li id="ca-nstab-main" class="active"><a href="Connectivity.html" title="View the content page [c]" accesskey="c" tabindex="-1">Page</a></li>
<li id="ca-talk" class="new"><a href="http://wiki.eclipse.org/index.php?title=Talk:SMILA/Project_Concepts/Connectivity&amp;action=edit&amp;redlink=1" title="Discussion about the content page [t]" accesskey="t" tabindex="-1">Discussion</a></li>
<li id="ca-viewsource"><a href="http://wiki.eclipse.org/index.php?title=SMILA/Project_Concepts/Connectivity&amp;action=edit" title="This page is protected.&#10;You can view its source [e]" accesskey="e" tabindex="-1">View source</a></li>
<li id="ca-history" class="collapsible"><a href="http://wiki.eclipse.org/index.php?title=SMILA/Project_Concepts/Connectivity&amp;action=history" title="Past revisions of this page [h]" accesskey="h" tabindex="-1">History</a></li>
</ul> <div class="tab-content background-white">
<div id="tab-pane-main-page-content" class="tab-pane active">
<h1 id="firstHeading" class="firstHeading page-header">
<span dir="auto">SMILA/Project Concepts/Connectivity</span>
</h1>
<div id="main-page-content">
<!-- subtitle -->
<div id="contentSub" class="alert alert-small alert-warning"><span class="subpages">&lt; <a href="../../SMILA.html" title="SMILA">SMILA</a>&lrm; | <a href="../Project_Concepts.1.html" title="SMILA/Project Concepts">Project Concepts</a></span></div>
<!-- /subtitle -->
<div id="mw-content-text" lang="en" dir="ltr" class="mw-content-ltr"><div id="toc" class="toc"><div id="toctitle"><h2>Contents</h2></div>
<ul>
<li class="toclevel-1 tocsection-1"><a href="Connectivity.html#Description"><span class="tocnumber">1</span> <span class="toctext">Description</span></a></li>
<li class="toclevel-1 tocsection-2"><a href="Connectivity.html#Discussion"><span class="tocnumber">2</span> <span class="toctext">Discussion</span></a></li>
<li class="toclevel-1 tocsection-3"><a href="Connectivity.html#Technical_proposal"><span class="tocnumber">3</span> <span class="toctext">Technical proposal</span></a>
<ul>
<li class="toclevel-2 tocsection-4"><a href="Connectivity.html#Overview"><span class="tocnumber">3.1</span> <span class="toctext">Overview</span></a></li>
<li class="toclevel-2 tocsection-5"><a href="Connectivity.html#Sub-Components"><span class="tocnumber">3.2</span> <span class="toctext">Sub-Components</span></a>
<ul>
<li class="toclevel-3 tocsection-6"><a href="Connectivity.html#APIs"><span class="tocnumber">3.2.1</span> <span class="toctext">APIs</span></a></li>
<li class="toclevel-3 tocsection-7"><a href="Connectivity.html#Processor"><span class="tocnumber">3.2.2</span> <span class="toctext">Processor</span></a></li>
<li class="toclevel-3 tocsection-8"><a href="Connectivity.html#Buffer_.28P2.29"><span class="tocnumber">3.2.3</span> <span class="toctext">Buffer (P2)</span></a></li>
<li class="toclevel-3 tocsection-9"><a href="Connectivity.html#Router"><span class="tocnumber">3.2.4</span> <span class="toctext">Router</span></a></li>
<li class="toclevel-3 tocsection-10"><a href="Connectivity.html#Delta_Indexing_Manager"><span class="tocnumber">3.2.5</span> <span class="toctext">Delta Indexing Manager</span></a></li>
</ul>
</li>
<li class="toclevel-2 tocsection-11"><a href="Connectivity.html#Interfaces"><span class="tocnumber">3.3</span> <span class="toctext">Interfaces</span></a></li>
<li class="toclevel-2 tocsection-12"><a href="Connectivity.html#Workflow"><span class="tocnumber">3.4</span> <span class="toctext">Workflow</span></a></li>
</ul>
</li>
</ul>
</div>
<h2><span class="mw-headline" id="Description">Description</span></h2>
<p>The Connectivity Manager is the entry point for external data. It is a single point of entry - on information level. The Connectivity Manager normalizes incoming information to an internally used message format. Large sets of incoming data (binary data) should also be persisted into an external storage to reduce the queue load. It also includes functionality for buffering and routing of the incoming information.
</p>
<h2><span class="mw-headline" id="Discussion">Discussion</span></h2>
<ul>
<li> <a href="http://wiki.eclipse.org/User:Daniel.stucky.empolis.com" title="User:Daniel.stucky.empolis.com">Daniel Stucky</a>: While implementing and testing the LucenePipelet, I found out that there may be a need to send special actions after a DataSource was indexed (e.g. for Lucene: send a flush action so that all changes are visible in the index to IndexReaders). I already discussed this with Igor and we had the following idea: As the whole system is asynchronus, we don't exatcly know when a index job has finished completely. ConnectivityManager knows when a Crawler has finished crawling. Thereafter it could create a special Queue Message to execute a pipeline (e.g. to flush Lucene index). Of course there may still be messages of the crawled DataSource either in the Buffer or in the Queue. Therefor before sending this special message, it should be checked that the Buffer and the Queue don't contain anymore messages belonging to the datasource.
</li>
</ul>
<p>As Lucene IndexReaders only have the index state of the time the index was opened available, they have to reopen the index from time to time to be up to date. The only posibility is to poll the index on a regular basis. This could be done in the Lucene Query Service or more genereal using some scheduling service of SMILA.
</p>
<h2><span class="mw-headline" id="Technical_proposal">Technical proposal</span></h2>
<p>The Connectivity Manager is the single point of entry for information (data) in the SMILA. It's functionality is devided into several Sub-Components for better modularization. The Connectivity Manager, and it's Sub-Components, should all be implemented in Java. The external interfaces should also support SCA.
</p>
<h3><span class="mw-headline" id="Overview">Overview</span></h3>
<p>This chart shows the Connectivity Manager, it's Sub-Components and their relationship as well as the relationship to other components&#160;:
<a href="http://wiki.eclipse.org/File:Connectivity_Module.png" class="image"><img alt="Connectivity Module.png" src="http://wiki.eclipse.org/images/c/cc/Connectivity_Module.png" width="960" height="720" /></a>
The connections using arrowheads represent the actual flow of data to/in/from the Connectivity Manager. See section <a href="Connectivity.html#Workflow">Workflow</a> for detailed information.
The XML and binary storages are global storages also accessible by BPEL.
</p>
<h3><span class="mw-headline" id="Sub-Components">Sub-Components</span></h3>
<h4><span class="mw-headline" id="APIs">APIs</span></h4>
<p>Probably the Connectivity Manager has to provide more than one interface/technologies for access. The main interface is used by IRMs to provide crawled data objects. But it may also be used from within BPEL processes or from the Publish/Subscribe Module. This concepts focuses on the interfaces used by IRMs. I also decided to integrate the Delta Indexing Manager functionality as a Sub-Component in the Connectivity Manager. But parts of it's API are accessible via the Connectivity Manager interface. The Connectivity Manager's APIs should be available via SCA, but there is no such need for the Sub-Components.
</p>
<h4><span class="mw-headline" id="Processor">Processor</span></h4>
<p>The Processor is the core of the Connectivity Manager, it does the actual processing of the incoming data objects. The incoming data is stored depending on it's type:
</p>
<ul>
<li> large or binary data is stored in a binary store (eg. distributed filesystem)
</li>
<li> all other data os stored in a XML store (e.g. XML database)
</li>
</ul>
<p>The Processor also creates the message object to be enqueued. A message contains the unique ID of the object, the Delta Indexing hash, routing information and any additional needed information. It should be configurable what information is part of a message.
The Processor should also be able to standardize incoming objects (either Records and/or MessageObjects of the 2nd alternative interface design) to the latest version (internal representation) or to reject them.
</p>
<h4><span class="mw-headline" id="Buffer_.28P2.29">Buffer (P2)</span></h4>
<p>The Buffer delays the enqueueing of outgoing messages. Therefore it needs a seperate Queue mechanism to temporarily store the messages. This has not to be mistaken with the Queue Servers\! The Buffer provides functionality to detect and resolve competing messages (add/update and delete of the same document).
</p><p>For a first release the Buffer functionality is of low priority (P2).
</p>
<h4><span class="mw-headline" id="Router">Router</span></h4>
<p>The Router routes messages to according Queues and/or BPEL workflows. The routing information (what whereto) has to be provided by configuration. The Router also has to update the Delta Indexing information accordingly. Neither the IRM nor the Connectivity Manager get's any feedback if/how a message was processed (successfully or if some error noccured). The only feedback the Router (and so the Connectivity Manager) gets is if a message was enqueed or not. Therefore after a message was successfully enqueued one of the following actions must be triggered by the Router:
</p>
<ul>
<li> add: create the Delta Indexing entry and mark as processed (visited)
</li>
<li> update: update the Delta Indexing entry and mark as processed (visited)
</li>
<li> delete: remove the Delta Indexing entry
</li>
</ul>
<p>It may be neccessary to directly access the Router after a BPEL workflow has finished to route a message to another Queue and therefore expand the API.
</p><p>{anchor:Delta Indexing Manager}
</p>
<h4><span class="mw-headline" id="Delta_Indexing_Manager">Delta Indexing Manager</span></h4>
<p>The Delta Indexing Manager stores information about last modification of each document (even compound elements) and can determine if a document has changed. The information about last modification should be some kind of Hash computed by the Crawler (see <a href="IRM.html" title="SMILA/Project Concepts/IRM">IRM</a> for further information.) It provides functionality to manage this information, to determine if documents have changed, to mark documents that have not changed (visited flag) and to determine documents that are indexed but no longer exist in the data source. The Delta Indexing Manager was moved inside the Connectivity Manager for these reasons:
</p>
<ul>
<li> some of it's functionality is used within the Connectivity Manager
</li>
<li> as a single point of access should "know" about the delta indexing information
</li>
<li> in a distributed system we only need one connection from a IRM to the Connectivity Manager and not a second one to access Delta Indexing Manager (this seems not to be a big gain, but may proove valid in high volume distributed scenarios)
</li>
</ul>
<p>Despite of being a part of the Connectivity Manager, the implementation of Delta Indexing Manager is still replaceable to provide different stores for the delta indexing information (e.g. database or even a search index).
</p><p>Here is a list of the information that needs to be stored by the Delta Indexing Manager:
</p>
<ul>
<li> ID: the id of the document
</li>
<li> Hash: the hash of the document to determine modifications
</li>
<li> DataSourceID: the id of the data source from where the document was provided. This is already part of the document's ID, but we need it as seperate value to clear by source
</li>
<li> IsCompound: flag, if the document is a compound object. This is needed to clean up recursively
</li>
<li> ParentID or ChildIDs: a reference to the parent document (if any exists) or refferences to child documents. This is needed to clean up recursively.
</li>
<li> VisitedFlag: flag that is temporary set during processing of a data source, to mark documents as visited. At the end all unmarked documents of a data source are deleted.
</li>
</ul>
<p>If this information is stored in a database we have to provide an efficient table scheme.{info:title=Improvement}
A further feature improvement of DeltaIndexing is to not only store information about data objects but also store information about hierarchy nodes (e.g. folders in filesystem or exchange). Assuming that hierarchy nodes now if any of their sub elements (data objects or hierarchy nodes) have changed, delta indexing performs faster as complete hierarchy levels can be skipped during crawling. A hierarchy does not have to be a tree but may be a graph as well. So data objects and hierarchy nodes may be refferenced by more than one hierarchy node, it's not a 1:1 child - parent relationship. Special care has to be taken when deleting hierarchy nodes to not delete elements that are refferenced by other hierarchy nodes. Crawlers neeed to be adopted so that hierachy nodes are returned, too.
I suggest to make this feature P2, as such an optimization is not neccessary for a first release..{info}{anchor:Interfaces}
</p>
<h3><span class="mw-headline" id="Interfaces">Interfaces</span></h3>
<p>The following data types are used in the Interfaces:
</p>
<ul>
<li> DataObject: contains the objects ID, the hash value used for delta Indexing and all information (xml and bin)
</li>
<li> ID: a unique id of a DataObject. See <a href="ID_Concept.html" title="SMILA/Project Concepts/ID Concept">ID Concept</a> for details about IDs.
</li>
</ul>
<p>The Sub-Component Processor has no interface itself, but it implements the Connectivity Manager Interface.
</p>
<div dir="ltr" class="mw-geshi mw-code mw-content-ltr"><div class="java source-java"><pre class="de1"><span class="kw1">interface</span> ConnectivityManager
<span class="br0">&#123;</span>
<span class="kw4">void</span> add<span class="br0">&#40;</span>DataObject data<span class="br0">&#41;</span><span class="sy0">;</span>
<span class="kw4">void</span> update<span class="br0">&#40;</span>DataObject data<span class="br0">&#41;</span><span class="sy0">;</span>
<span class="kw4">void</span> delete<span class="br0">&#40;</span>ID id<span class="br0">&#41;</span><span class="sy0">;</span>
&#160;
<span class="co1">// external interface for DeltaIndexing</span>
<span class="kw4">void</span> clear<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="kw4">void</span> clear<span class="br0">&#40;</span><span class="kw3">String</span> dataSourceID<span class="br0">&#41;</span><span class="sy0">;</span>
<span class="kw4">void</span> init<span class="br0">&#40;</span><span class="kw3">String</span> dataSourceID<span class="br0">&#41;</span><span class="sy0">;</span>
<span class="kw4">boolean</span> checkForUpdate<span class="br0">&#40;</span>ID id, <span class="kw3">String</span> hash<span class="br0">&#41;</span><span class="sy0">;</span>
<span class="kw4">void</span> deleteDelta<span class="br0">&#40;</span><span class="kw3">String</span> dataSourceID<span class="br0">&#41;</span><span class="sy0">;</span>
<span class="kw4">void</span> deleteDelta<span class="br0">&#40;</span>ID id<span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">// to handle delta deletion for a single compound object and it's elements (recursion&#160;!)</span>
<span class="br0">&#125;</span></pre></div></div>
<p>An alternative to optimize network overhead is to provide methods supporting Lists of objects.
</p>
<div dir="ltr" class="mw-geshi mw-code mw-content-ltr"><div class="java source-java"><pre class="de1"><span class="kw1">interface</span> ConnectivityManager
<span class="br0">&#123;</span>
&#160;
<span class="kw4">void</span> add<span class="br0">&#40;</span>List<span class="sy0">&lt;</span>DataObject<span class="sy0">&gt;</span> data<span class="br0">&#41;</span><span class="sy0">;</span>
<span class="kw4">void</span> update<span class="br0">&#40;</span>List<span class="sy0">&lt;</span>DataObject<span class="sy0">&gt;</span> data<span class="br0">&#41;</span><span class="sy0">;</span>
<span class="kw4">void</span> delete<span class="br0">&#40;</span>List<span class="sy0">&lt;</span>ID<span class="sy0">&gt;</span> ids<span class="br0">&#41;</span><span class="sy0">;</span>
List<span class="sy0">&lt;</span>boolean<span class="sy0">&gt;</span> checkForUpdate<span class="br0">&#40;</span>List<span class="sy0">&lt;</span>DeltaIndexInfo<span class="sy0">&gt;</span> infos<span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
&#160;
<span class="kw1">class</span> DeltaIndexInfo
<span class="br0">&#123;</span>
ID id<span class="sy0">;</span>
<span class="kw3">String</span> hash<span class="sy0">;</span>
<span class="br0">&#125;</span></pre></div></div>
<p><br />
It makes especially sense for checkUpdate() and delete(), as the parameters of those methods do not contain much data. The size of the DataObject used in add() and update() varies greatly.
For smaller objects it makes sense to provide Lists, for larger objects not. Of course the maximum List size should be configurable but who decides what List size to use (1 vs. N)? This has to be done dynamically to avoid memory errors\!
Another problem is that the Iterator concept used in Crawlers does not fit to methods with Lists. Therefore the iteration over DeltaIndexInfo must be seperated from getting the DataObjects. For some Crawlers/DataSources it may be difficult or even impossible to support direct access on objects outside of an iteration. All of this complicates the logic\!
</p><p>{note:title=2nd Alternative Interface }
On page <a href="ConnectivityMessageInterface.html" title="SMILA/Project Concepts/ConnectivityMessageInterface">ConnectivityMessageInterface</a> you will find another alternative for the Connectivity Managers interface based on messages.{note}
</p><p><br />
</p>
<div dir="ltr" class="mw-geshi mw-code mw-content-ltr"><div class="java source-java"><pre class="de1"><span class="kw1">interface</span> DeltaIndexingManager
<span class="br0">&#123;</span>
<span class="kw4">void</span> clear<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="kw4">void</span> clear<span class="br0">&#40;</span><span class="kw3">String</span> dataSourceID<span class="br0">&#41;</span><span class="sy0">;</span>
<span class="kw4">void</span> init<span class="br0">&#40;</span><span class="kw3">String</span> dataSourceID<span class="br0">&#41;</span><span class="sy0">;</span>
<span class="kw4">void</span> finish<span class="br0">&#40;</span><span class="kw3">String</span> dataSourceID<span class="br0">&#41;</span><span class="sy0">;</span>
<span class="kw4">boolean</span> checkForUpdate<span class="br0">&#40;</span>ID id, <span class="kw3">String</span> hash<span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">// to reduce method calls mark entry as visited on return value false</span>
<span class="kw4">void</span> visit<span class="br0">&#40;</span>ID id, <span class="kw3">String</span> hash<span class="br0">&#41;</span><span class="sy0">;</span>
<span class="kw4">void</span> delete<span class="br0">&#40;</span>ID id<span class="br0">&#41;</span><span class="sy0">;</span>
List<span class="sy0">&lt;</span>Identity<span class="sy0">&gt;</span> getObsoleteIDs<span class="br0">&#40;</span><span class="kw3">String</span> dataSourceID<span class="br0">&#41;</span><span class="sy0">;</span>
List<span class="sy0">&lt;</span>Identity<span class="sy0">&gt;</span> getObsoleteIDs<span class="br0">&#40;</span>ID id<span class="br0">&#41;</span><span class="sy0">;</span> <span class="co1">// for compounds</span>
<span class="br0">&#125;</span></pre></div></div>
<ul>
<li> clear: clears the complete state information
</li>
<li> clear: clears the state information for one dataSourceID
</li>
<li> init: initializes the internal state for an import of a dataSourceID and establishes a lock to avoid that the same dataSourceID ist initialized multiple times concurrently
</li>
<li> checkForUpdate: checks for the hash of the current id is new or has changed (true) or not (false)
</li>
<li> visit: updates the hash and marks this id as visited
</li>
<li> getObsoleteIDs: returns the entries that have not been marked as visited
</li>
<li> finish: removes the lock
</li>
</ul>
<p><br />
</p>
<div dir="ltr" class="mw-geshi mw-code mw-content-ltr"><div class="java source-java"><pre class="de1"><span class="kw1">interface</span> Buffer
<span class="br0">&#123;</span>
<span class="kw4">void</span> store<span class="br0">&#40;</span>Message msg<span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span></pre></div></div>
<div dir="ltr" class="mw-geshi mw-code mw-content-ltr"><div class="java source-java"><pre class="de1"><span class="kw1">interface</span> Router
<span class="br0">&#123;</span>
<span class="kw4">void</span> route<span class="br0">&#40;</span>Message msg<span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span></pre></div></div>
<p>{info:title=Conclusion}
During the team meeting on April 15 we agreed to implement the "1st alternative interface", employing lists to reduce communication overhead. In addition, the Crawler interface will also support lists. A Message-like interface or a pure XML interface may be adde later on.
{info}
</p>
<h3><span class="mw-headline" id="Workflow">Workflow</span></h3>
<p>Here follows a description of the workflow when used by an IRM:
</p>
<ul>
<li>Crawler*
</li>
<li> the CrawlerController initializes an import by calling init() to reset Delta Indexing Manager visited flags. It should not be allowed to concurrently import the same DataSource, Connectivity and DeltaIIndexing Manager have to enshure this.
</li>
<li> for each Record (only ID and hash) the CrawlerController receives by the Crawler, it asks the Connectivity Manager (internally the DeltaIndexing Manager) if it needs to be added/updated
<ul>
<li> no:
<ul>
<li> mark the Delta Indexing entry as visited
</li>
</ul>
</li>
<li> yes:
<ul>
<li> the Record (now with all data) is sent to the Connectivity Manager. The Connectivity Manager should not request the data object via callback. Crawlers should be the active components that send/request information.
</li>
<li> the Processor stores the Record data in the external stores (Bin and XML) and creates an add/update Message and sends it to the Buffer
</li>
<li> the Buffer applies it's logic (holding back the message some time, checking for conflicts) and sends the add/update message to the Router
</li>
<li> the Router routes the add/update Message to the appropriate Queue/BPEL workflow
<ul>
<li> add: creates a Delta Indexing entry for the object and marks it as visited
</li>
<li> update: updates the Delta Indexing entry for the object and marks it as visited
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li> after the iteration has finished the CrawlerController tells the Connectivity Manager to perform Delta Indexing Manager Delete
<ul>
<li> the Processor checks the Buffer, until no more messages belonging to this DataSource are on hold
</li>
<li> the Processor gets the list of objects to be deleted from the Delta Indexing Manager
</li>
<li> the Processor creates N delete messages and adds each to the Buffer and calls Delta Index Manager finish() (cleans up the visited flags)
</li>
<li> the Buffer applies it's logic and sends each delete message to the Router
</li>
<li> the Router routes the delete Message to the appropriate Queue/BPEL workflow and removes the corresponding entry from the Delta Indexing Manager {info:title=Useful Information}For better performance it may be preferable to not create a single delete Message for each oject but to create one delete Message with a list of IDs to be deleted. DeltaIndexing should then support a delete(List&lt;ID&gt;) metod. But this will complicate the Buffer logic. Is it possible to pack a list of IDs in a message&#160;?{info}
</li>
</ul>
</li>
</ul>
<ul>
<li>Agent*
</li>
<li> the Agent sends a add Record (all data) to the AgentController, which in turn calls add on the ConnectivityManager. No DeltaIndex is done (init() is not called) so no component applies DeltaIndexing logic.
<ul>
<li> the Processor stores the Record data in the external stores (Bin and XML) and creates an add Message and sends it to the Buffer
</li>
<li> the Buffer applies it's logic (holding back the message some time, checking for conflicts) and sends the add message to the Router
</li>
<li> the Router routes the add Message to the appropriate Queue/BPEL workflow
</li>
<li> add: creates a Delta Indexing entry for the object and marks it as visited
</li>
</ul>
</li>
<li> the Agent sends a update Record (all data) to the AgentController, which in turn calls update on the ConnectivityManager
<ul>
<li> the Processor stores the Record data in the external stores (Bin and XML) and creates an update Message and sends it to the Buffer
</li>
<li> the Buffer applies it's logic (holding back the message some time, checking for conflicts) and sends the update message to the Router
</li>
<li> the Router routes the update Message to the appropriate Queue/BPEL workflow
</li>
</ul>
</li>
<li> the Agent sends a delete Record (just ID) to the AgentController, which in turn calls delete on the ConnectivityManager
<ul>
<li> the Processor creates an delete Message and sends it to the Buffer
</li>
<li> the Buffer applies it's logic (holding back the message some time, checking for conflicts) and sends the delete message to the Router
</li>
<li> the Router routes the delete Message to the appropriate Queue/BPEL workflow
</li>
</ul>
</li>
</ul>
<!--
NewPP limit report
CPU time usage: 0.288 seconds
Real time usage: 0.317 seconds
Preprocessor visited node count: 91/1000000
Preprocessor generated node count: 152/1000000
Post‐expand include size: 0/2097152 bytes
Template argument size: 0/2097152 bytes
Highest expansion depth: 2/40
Expensive parser function count: 0/100
-->
<!-- Saved in parser cache with key my_wiki:pcache:idhash:15224-0!*!0!!en!2!* and timestamp 20150414084618 and revision id 113296
-->
</div>
<!-- catlinks -->
<div id='catlinks' class='catlinks catlinks-allhidden'></div> <!-- /catlinks -->
</div>
</div>
</div>
</div>
<!-- /maincontent -->
<!-- printfooter -->
<div class="printfooter">
Retrieved from "<a href="http://wiki.eclipse.org/index.php?title=SMILA/Project_Concepts/Connectivity&amp;oldid=113296">http://wiki.eclipse.org/index.php?title=SMILA/Project_Concepts/Connectivity&amp;oldid=113296</a>" </div>
<!-- /printfooter -->
<!-- debughtml -->
<!-- /debughtml -->
</div>
<!-- /bodyContent -->
</section>
<!-- /content -->
<!-- footer -->
</div> <section id="footer-contribution-info" style="border-top:1px solid #ccc;" class="footer-offset background-white margin-top-25"><div class="container text-center padding-top-10 padding-bottom-10"><p id="footercredit">This page was last modified 08:17, 13 August 2008 by <a href="http://wiki.eclipse.org/User:Daniel.stucky.empolis.com" title="User:Daniel.stucky.empolis.com">Daniel Stucky</a>.</p><p id="footerviews">This page has been accessed 3,012 times.</p></div></section> </main> <!-- /#main-content-container-row -->
<p id="back-to-top" class="noprint hidden-print">
<a class="visible-xs" href="Connectivity.html#top">Back to the top</a>
</p>
<footer role="contentinfo" class="noprint hidden-print">
<div class="container">
<div class="row">
<section id="footer-eclipse-foundation" class="col-xs-offset-1 col-xs-11 col-sm-7 col-md-6 col-md-offset-0">
<h2 class="section-title">Eclipse Foundation</h2>
<ul class="nav">
<li><a href="https://eclipse.org/org/">About us</a></li>
<li><a href="https://eclipse.org/org/foundation/contact.php">Contact Us</a></li>
<li><a href="https://eclipse.org/donate">Donate</a></li>
<li><a href="https://eclipse.org/org/documents/">Governance</a></li>
<li><a href="https://eclipse.org/artwork/">Logo and Artwork</a></li>
<li><a href="https://eclipse.org/org/foundation/directors.php">Board of Directors</a></li>
</ul>
</section>
<section id="footer-legal" class="col-xs-offset-1 col-xs-11 col-sm-7 col-md-6 col-md-offset-0">
<h2 class="section-title">Legal</h2>
<ul class="nav">
<li><a href="https://eclipse.org/legal/privacy.php">Privacy Policy</a></li>
<li><a href="https://eclipse.org/legal/termsofuse.php">Terms of Use</a></li>
<li><a href="https://eclipse.org/legal/copyright.php">Copyright Agent</a></li>
<li><a href="https://eclipse.org/org/documents/epl-v10.php">Eclipse Public License </a></li>
<li><a href="https://eclipse.org/legal/">Legal Resources </a></li>
</ul>
</section>
<section id="footer-useful-links" class="col-xs-offset-1 col-xs-11 col-sm-7 col-md-6 col-md-offset-0">
<h2 class="section-title">Useful Links</h2>
<ul class="nav">
<li><a href="https://bugs.eclipse.org/bugs/">Report a Bug</a></li>
<li><a href="http://help.eclipse.org/">Documentation</a></li>
<li><a href="https://eclipse.org/contribute/">How to Contribute</a></li>
<li><a href="https://eclipse.org/mail/">Mailing Lists</a></li>
<li><a href="https://eclipse.org/forums/">Forums</a></li>
<li><a href="http://marketplace.eclipse.org/">Marketplace</a></li>
</ul>
</section>
<section id="footer-other" class="col-xs-offset-1 col-xs-11 col-sm-7 col-md-6 col-md-offset-0">
<h2 class="section-title">Other</h2>
<ul class="nav">
<li><a href="https://eclipse.org/ide/">IDE and Tools</a></li>
<li><a href="https://eclipse.org/projects">Community of Projects</a></li>
<li><a href="https://eclipse.org/org/workinggroups/">Working Groups</a></li>
</ul>
<ul class="list-inline social-media">
<li><a href="https://twitter.com/EclipseFdn"><i class="fa fa-twitter-square"></i></a></li>
<li><a href="https://plus.google.com/+Eclipse"><i class="fa fa-google-plus-square"></i></a></li>
<li><a href="https://www.facebook.com/eclipse.org"><i class="fa fa-facebook-square"></i> </a></li>
<li><a href="https://www.youtube.com/user/EclipseFdn"><i class="fa fa-youtube-square"></i></a></li>
</ul>
</section>
<div id="copyright" class="col-xs-offset-1 col-sm-14 col-md-24 col-md-offset-0">
<div>
<span><img src="http://eclipse.org/eclipse.org-common/themes/solstice/public/images/logo/eclipse-logo-bw-800x188.png" alt="Eclipse.org black and white logo" width="166" height="39" id="logo-eclipse-white"/></span>
<p id="copyright-text">Copyright &copy; 2014 The Eclipse Foundation. All Rights Reserved.</p>
</div>
</div>
<a href="Connectivity.html#" class="scrollup">Back to the top</a>
</div>
</div>
</footer>
<script src="http://wiki.eclipse.org/skins/solstice/public/javascript/main.min.js"></script>
<!-- Placed at the end of the document so the pages load faster -->
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-910670-2']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script> <!-- /footer -->
<script>/*<![CDATA[*/window.jQuery && jQuery.ready();/*]]>*/</script><script>if(window.mw){
mw.loader.state({"skins.solstice":"loading","site":"ready","user":"ready","user.groups":"ready"});
}</script>
<script src="http://wiki.eclipse.org/load.php?debug=false&amp;lang=en&amp;modules=skins.solstice&amp;only=scripts&amp;skin=solstice&amp;*"></script>
<script>if(window.mw){
mw.loader.load(["mediawiki.action.view.postEdit","mediawiki.user","mediawiki.hidpi","mediawiki.page.ready","mediawiki.searchSuggest"],null,true);
}</script>
<script>if(window.mw){
mw.config.set({"wgBackendResponseTime":347});
}</script> </body>
</html>