blob: 7609cf6adb7ceab5b5bb7205307a516dd239d2fb [file] [log] [blame]
<!DOCTYPE html>
<!--[if IE]><![endif]-->
<html>
<head>
<link rel="canonical" href="https://ignite.apache.org/releases/2.7.0/dotnetdoc/api/Apache.Ignite.Core.Compute.ComputeTaskAdapter-3.html" />
<META NAME="ROBOTS" CONTENT="NOINDEX">
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Class ComputeTaskAdapter&lt;TArg, TJobRes, TTaskRes&gt;
| Apache Ignite.NET </title>
<meta name="viewport" content="width=device-width">
<meta name="title" content="Class ComputeTaskAdapter&lt;TArg, TJobRes, TTaskRes&gt;
| Apache Ignite.NET ">
<meta name="generator" content="docfx 2.24.0.0">
<link rel="shortcut icon" href="../images/favicon.ico">
<link rel="stylesheet" href="../styles/docfx.vendor.css">
<link rel="stylesheet" href="../styles/docfx.css">
<link rel="stylesheet" href="../styles/main.css">
<meta property="docfx:navrel" content="../toc.html">
<meta property="docfx:tocrel" content="toc.html">
<meta property="docfx:rel" content="../">
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-61232409-1', 'auto');
ga('send', 'pageview');
</script></head>
<body data-spy="scroll" data-target="#affix">
<div id="wrapper">
<header>
<nav id="autocollapse" class="navbar navbar-inverse ng-scope" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="../index.html">
<img id="logo" class="svg" src="../images/logo_ignite_32_32.png" alt="">
</a>
</div>
<div class="collapse navbar-collapse" id="navbar">
<form class="navbar-form navbar-right" role="search" id="search">
<div class="form-group">
<input type="text" class="form-control" id="search-query" placeholder="Search" autocomplete="off">
</div>
</form>
</div>
</div>
</nav>
<div class="subnav navbar navbar-default">
<div class="container hide-when-search" id="breadcrumb">
<ul class="breadcrumb">
<li></li>
</ul>
</div>
</div>
</header>
<div class="container body-content">
<div id="search-results">
<div class="search-list"></div>
<div class="sr-items"></div>
<ul id="pagination"></ul>
</div>
</div>
<div role="main" class="container body-content hide-when-search">
<div class="sidenav hide-when-search">
<a class="btn toc-toggle collapse" data-toggle="collapse" href="#sidetoggle" aria-expanded="false" aria-controls="sidetoggle">Show / Hide Table of Contents</a>
<div class="sidetoggle collapse" id="sidetoggle">
<div id="sidetoc"></div>
</div>
</div>
<div class="article row grid-right">
<div class="col-md-10">
<article class="content wrap" id="_content" data-uid="Apache.Ignite.Core.Compute.ComputeTaskAdapter`3">
<h1 id="Apache_Ignite_Core_Compute_ComputeTaskAdapter_3" data-uid="Apache.Ignite.Core.Compute.ComputeTaskAdapter`3" class="text-break">Class ComputeTaskAdapter&lt;TArg, TJobRes, TTaskRes&gt;
</h1>
<div class="markdown level0 summary"><p>Convenience adapter for <a class="xref" href="Apache.Ignite.Core.Compute.IComputeTask-3.html">IComputeTask&lt;TArg, TJobRes, TRes&gt;</a> interface</p>
</div>
<div class="markdown level0 conceptual"></div>
<div class="inheritance">
<h5>Inheritance</h5>
<div class="level0"><span class="xref">System.Object</span></div>
<div class="level1"><span class="xref">ComputeTaskAdapter&lt;TArg, TJobRes, TTaskRes&gt;</span></div>
<div class="level2"><a class="xref" href="Apache.Ignite.Core.Compute.ComputeTaskSplitAdapter-3.html">ComputeTaskSplitAdapter&lt;TArg, TJobRes, TTaskRes&gt;</a></div>
</div>
<div classs="implements">
<h5>Implements</h5>
<div><a class="xref" href="Apache.Ignite.Core.Compute.IComputeTask-3.html">IComputeTask</a>&lt;TArg, TJobRes, TTaskRes&gt;</div>
</div>
<div class="inheritedMembers">
<h5>Inherited Members</h5>
<div>
<span class="xref">System.Object.ToString()</span>
</div>
<div>
<span class="xref">System.Object.Equals(System.Object)</span>
</div>
<div>
<span class="xref">System.Object.Equals(System.Object, System.Object)</span>
</div>
<div>
<span class="xref">System.Object.ReferenceEquals(System.Object, System.Object)</span>
</div>
<div>
<span class="xref">System.Object.GetHashCode()</span>
</div>
<div>
<span class="xref">System.Object.GetType()</span>
</div>
<div>
<span class="xref">System.Object.MemberwiseClone()</span>
</div>
</div>
<h6><strong>Namespace</strong>: <a class="xref" href="Apache.Ignite.Core.Compute.html">Apache.Ignite.Core.Compute</a></h6>
<h6><strong>Assembly</strong>: Apache.Ignite.Core.dll</h6>
<h5 id="Apache_Ignite_Core_Compute_ComputeTaskAdapter_3_syntax">Syntax</h5>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public abstract class ComputeTaskAdapter&lt;TArg, TJobRes, TTaskRes&gt; : IComputeTask&lt;TArg, TJobRes, TTaskRes&gt;</code></pre>
</div>
<h5 class="typeParameters">Type Parameters</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Name</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="parametername">TArg</span></td>
<td></td>
</tr>
<tr>
<td><span class="parametername">TJobRes</span></td>
<td></td>
</tr>
<tr>
<td><span class="parametername">TTaskRes</span></td>
<td></td>
</tr>
</tbody>
</table>
<h3 id="methods">Methods
</h3>
<a id="Apache_Ignite_Core_Compute_ComputeTaskAdapter_3_Map_" data-uid="Apache.Ignite.Core.Compute.ComputeTaskAdapter`3.Map*"></a>
<h4 id="Apache_Ignite_Core_Compute_ComputeTaskAdapter_3_Map_System_Collections_Generic_IList_Apache_Ignite_Core_Cluster_IClusterNode___0_" data-uid="Apache.Ignite.Core.Compute.ComputeTaskAdapter`3.Map(System.Collections.Generic.IList{Apache.Ignite.Core.Cluster.IClusterNode},`0)">Map(IList&lt;IClusterNode&gt;, TArg)</h4>
<div class="markdown level1 summary"><p>This method is called to map or split Ignite task into multiple Ignite jobs. This is the
first method that gets called when task execution starts.</p>
</div>
<div class="markdown level1 conceptual"></div>
<h5 class="decalaration">Declaration</h5>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public abstract IDictionary&lt;IComputeJob&lt;TJobRes&gt;, IClusterNode&gt; Map(IList&lt;IClusterNode&gt; subgrid, TArg arg)</code></pre>
</div>
<h5 class="parameters">Parameters</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Type</th>
<th>Name</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="xref">System.Collections.Generic.IList</span>&lt;<a class="xref" href="Apache.Ignite.Core.Cluster.IClusterNode.html">IClusterNode</a>&gt;</td>
<td><span class="parametername">subgrid</span></td>
<td><p>Nodes available for this task execution. Note that order of nodes is
guaranteed to be randomized by container. This ensures that every time you simply iterate
through Ignite nodes, the order of nodes will be random which over time should result into
all nodes being used equally.</p>
</td>
</tr>
<tr>
<td><span class="xref">TArg</span></td>
<td><span class="parametername">arg</span></td>
<td><p>Task execution argument. Can be <code>null</code>. This is the same argument
as the one passed into <code>ICompute.Execute()</code> methods.</p>
</td>
</tr>
</tbody>
</table>
<h5 class="returns">Returns</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="xref">System.Collections.Generic.IDictionary</span>&lt;<a class="xref" href="Apache.Ignite.Core.Compute.IComputeJob-1.html">IComputeJob</a>&lt;TJobRes&gt;, <a class="xref" href="Apache.Ignite.Core.Cluster.IClusterNode.html">IClusterNode</a>&gt;</td>
<td><p>Map of Ignite jobs assigned to subgrid node. If <code>null</code> or empty map is returned,
exception will be thrown.</p>
</td>
</tr>
</tbody>
</table>
<a id="Apache_Ignite_Core_Compute_ComputeTaskAdapter_3_OnResult_" data-uid="Apache.Ignite.Core.Compute.ComputeTaskAdapter`3.OnResult*"></a>
<h4 id="Apache_Ignite_Core_Compute_ComputeTaskAdapter_3_OnResult_Apache_Ignite_Core_Compute_IComputeJobResult__1__System_Collections_Generic_IList_Apache_Ignite_Core_Compute_IComputeJobResult__1___" data-uid="Apache.Ignite.Core.Compute.ComputeTaskAdapter`3.OnResult(Apache.Ignite.Core.Compute.IComputeJobResult{`1},System.Collections.Generic.IList{Apache.Ignite.Core.Compute.IComputeJobResult{`1}})">OnResult(IComputeJobResult&lt;TJobRes&gt;, IList&lt;IComputeJobResult&lt;TJobRes&gt;&gt;)</h4>
<div class="markdown level1 summary"><p>Default implementation which will wait for all jobs to complete before
calling <a class="xref" href="Apache.Ignite.Core.Compute.IComputeTask-3.html#Apache_Ignite_Core_Compute_IComputeTask_3_Reduce_System_Collections_Generic_IList_Apache_Ignite_Core_Compute_IComputeJobResult__1___">Reduce(IList&lt;IComputeJobResult&lt;TJobRes&gt;&gt;)</a> method.
<p>
If remote job resulted in exception <a class="xref" href="Apache.Ignite.Core.Compute.IComputeJobResult-1.html#Apache_Ignite_Core_Compute_IComputeJobResult_1_Exception">Exception</a>
is not <code>null</code>),
then <a class="xref" href="Apache.Ignite.Core.Compute.ComputeJobResultPolicy.html#Apache_Ignite_Core_Compute_ComputeJobResultPolicy_Failover">Failover</a> policy will be returned if
the exception is instance of <a class="xref" href="Apache.Ignite.Core.Cluster.ClusterTopologyException.html">ClusterTopologyException</a>
or <a class="xref" href="Apache.Ignite.Core.Compute.ComputeExecutionRejectedException.html">ComputeExecutionRejectedException</a>, which means that
remote node either failed or job execution was rejected before it got a chance to start. In all
other cases the exception will be rethrown which will ultimately cause task to fail.</p>
</div>
<div class="markdown level1 conceptual"></div>
<h5 class="decalaration">Declaration</h5>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public virtual ComputeJobResultPolicy OnResult(IComputeJobResult&lt;TJobRes&gt; res, IList&lt;IComputeJobResult&lt;TJobRes&gt;&gt; rcvd)</code></pre>
</div>
<h5 class="parameters">Parameters</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Type</th>
<th>Name</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a class="xref" href="Apache.Ignite.Core.Compute.IComputeJobResult-1.html">IComputeJobResult</a>&lt;TJobRes&gt;</td>
<td><span class="parametername">res</span></td>
<td><p>Received remote Ignite executable result.</p>
</td>
</tr>
<tr>
<td><span class="xref">System.Collections.Generic.IList</span>&lt;<a class="xref" href="Apache.Ignite.Core.Compute.IComputeJobResult-1.html">IComputeJobResult</a>&lt;TJobRes&gt;&gt;</td>
<td><span class="parametername">rcvd</span></td>
<td><p>All previously received results.</p>
</td>
</tr>
</tbody>
</table>
<h5 class="returns">Returns</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a class="xref" href="Apache.Ignite.Core.Compute.ComputeJobResultPolicy.html">ComputeJobResultPolicy</a></td>
<td><p>Result policy that dictates how to process further upcoming job results.</p>
</td>
</tr>
</tbody>
</table>
<a id="Apache_Ignite_Core_Compute_ComputeTaskAdapter_3_Reduce_" data-uid="Apache.Ignite.Core.Compute.ComputeTaskAdapter`3.Reduce*"></a>
<h4 id="Apache_Ignite_Core_Compute_ComputeTaskAdapter_3_Reduce_System_Collections_Generic_IList_Apache_Ignite_Core_Compute_IComputeJobResult__1___" data-uid="Apache.Ignite.Core.Compute.ComputeTaskAdapter`3.Reduce(System.Collections.Generic.IList{Apache.Ignite.Core.Compute.IComputeJobResult{`1}})">Reduce(IList&lt;IComputeJobResult&lt;TJobRes&gt;&gt;)</h4>
<div class="markdown level1 summary"><p>Reduces (or aggregates) results received so far into one compound result to be returned to
caller via task.
<p>
Note, that if some jobs did not succeed and could not be failed over then the list of
results passed into this method will include the failed results. Otherwise, failed
results will not be in the list.</p>
</div>
<div class="markdown level1 conceptual"></div>
<h5 class="decalaration">Declaration</h5>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public abstract TTaskRes Reduce(IList&lt;IComputeJobResult&lt;TJobRes&gt;&gt; results)</code></pre>
</div>
<h5 class="parameters">Parameters</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Type</th>
<th>Name</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="xref">System.Collections.Generic.IList</span>&lt;<a class="xref" href="Apache.Ignite.Core.Compute.IComputeJobResult-1.html">IComputeJobResult</a>&lt;TJobRes&gt;&gt;</td>
<td><span class="parametername">results</span></td>
<td><p>Received job results. Note that if task class has
<a class="xref" href="Apache.Ignite.Core.Compute.ComputeTaskNoResultCacheAttribute.html">ComputeTaskNoResultCacheAttribute</a> attribute, then this list will be empty.</p>
</td>
</tr>
</tbody>
</table>
<h5 class="returns">Returns</h5>
<table class="table table-bordered table-striped table-condensed">
<thead>
<tr>
<th>Type</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><span class="xref">TTaskRes</span></td>
<td><p>Task result constructed from results of remote executions.</p>
</td>
</tr>
</tbody>
</table>
<h3 id="implements">Implements</h3>
<div>
<a class="xref" href="Apache.Ignite.Core.Compute.IComputeTask-3.html">IComputeTask&lt;TArg, TJobRes, TRes&gt;</a>
</div>
</article>
</div>
<div class="hidden-sm col-md-2" role="complementary">
<div class="sideaffix">
<nav class="bs-docs-sidebar hidden-print hidden-xs hidden-sm affix" id="affix">
<!-- <p><a class="back-to-top" href="#top">Back to top</a><p> -->
</nav>
</div>
</div>
</div>
</div>
<footer>
<div class="grad-bottom"></div>
<div class="footer">
<div class="container">
<span class="pull-right">
<a href="#top">Back to top</a>
</span>
© 2015 - 2018 The Apache Software Foundation
</div>
</div>
</footer>
</div>
<script type="text/javascript" src="../styles/docfx.vendor.js"></script>
<script type="text/javascript" src="../styles/docfx.js"></script>
<script type="text/javascript" src="../styles/main.js"></script>
</body>
</html>