﻿<!DOCTYPE html>
<!--[if IE]><![endif]-->
<html>
  
  <head>
<link rel="canonical" href="https://ignite.apache.org/releases/2.7.5/dotnetdoc/api/Apache.Ignite.Core.Cache.Affinity.IAffinityFunction.html" />

<META NAME="ROBOTS" CONTENT="NOINDEX">

    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>Interface IAffinityFunction
   | Apache Ignite.NET </title>
    <meta name="viewport" content="width=device-width">
    <meta name="title" content="Interface IAffinityFunction
   | 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.Cache.Affinity.IAffinityFunction">
  
  
  <h1 id="Apache_Ignite_Core_Cache_Affinity_IAffinityFunction" data-uid="Apache.Ignite.Core.Cache.Affinity.IAffinityFunction" class="text-break">Interface IAffinityFunction
  </h1>
  <div class="markdown level0 summary"><p>Represents a function that maps cache keys to cluster nodes.
<p>
Predefined implementations: 
<a class="xref" href="Apache.Ignite.Core.Cache.Affinity.Rendezvous.RendezvousAffinityFunction.html">RendezvousAffinityFunction</a>.</p>
</div>
  <div class="markdown level0 conceptual"></div>
  <h6><strong>Namespace</strong>: <a class="xref" href="Apache.Ignite.Core.Cache.Affinity.html">Apache.Ignite.Core.Cache.Affinity</a></h6>
  <h6><strong>Assembly</strong>: Apache.Ignite.Core.dll</h6>
  <h5 id="Apache_Ignite_Core_Cache_Affinity_IAffinityFunction_syntax">Syntax</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public interface IAffinityFunction</code></pre>
  </div>
  <h3 id="properties">Properties
  </h3>
  <a id="Apache_Ignite_Core_Cache_Affinity_IAffinityFunction_Partitions_" data-uid="Apache.Ignite.Core.Cache.Affinity.IAffinityFunction.Partitions*"></a>
  <h4 id="Apache_Ignite_Core_Cache_Affinity_IAffinityFunction_Partitions" data-uid="Apache.Ignite.Core.Cache.Affinity.IAffinityFunction.Partitions">Partitions</h4>
  <div class="markdown level1 summary"><p>Gets the total number of partitions.
<p>
All caches should always provide correct partition count which should be the same on all 
participating nodes. Note that partitions should always be numbered from 0 inclusively 
to N exclusively without any gaps.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">int Partitions { get; }</code></pre>
  </div>
  <h5 class="propertyValue">Property Value</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.Int32</span></td>
        <td></td>
      </tr>
    </tbody>
  </table>
  <h3 id="methods">Methods
  </h3>
  <a id="Apache_Ignite_Core_Cache_Affinity_IAffinityFunction_AssignPartitions_" data-uid="Apache.Ignite.Core.Cache.Affinity.IAffinityFunction.AssignPartitions*"></a>
  <h4 id="Apache_Ignite_Core_Cache_Affinity_IAffinityFunction_AssignPartitions_Apache_Ignite_Core_Cache_Affinity_AffinityFunctionContext_" data-uid="Apache.Ignite.Core.Cache.Affinity.IAffinityFunction.AssignPartitions(Apache.Ignite.Core.Cache.Affinity.AffinityFunctionContext)">AssignPartitions(AffinityFunctionContext)</h4>
  <div class="markdown level1 summary"><p>Gets affinity nodes for a partition. In case of replicated cache, all returned
nodes are updated in the same manner. In case of partitioned cache, the returned
list should contain only the primary and back up nodes with primary node being
always first.
<pare></pare>
Note that partitioned affinity must obey the following contract: given that node</p>
<pre><code>N</code></pre> is primary for some key <pre><code>K</code></pre>, if any other node(s) leave
<p>grid and no node joins grid, node <pre><code>N</code></pre> will remain primary for key <pre><code>K</code></pre>.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">IEnumerable&lt;IEnumerable&lt;IClusterNode&gt;&gt; AssignPartitions(AffinityFunctionContext context)</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.Cache.Affinity.AffinityFunctionContext.html">AffinityFunctionContext</a></td>
        <td><span class="parametername">context</span></td>
        <td><p>The affinity function context.</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.IEnumerable</span>&lt;<span class="xref">System.Collections.Generic.IEnumerable</span>&lt;<a class="xref" href="Apache.Ignite.Core.Cluster.IClusterNode.html">IClusterNode</a>&gt;&gt;</td>
        <td><p>A collection of partitions, where each partition is a collection of nodes,
where first node is a primary node, and other nodes are backup nodes.</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Cache_Affinity_IAffinityFunction_GetPartition_" data-uid="Apache.Ignite.Core.Cache.Affinity.IAffinityFunction.GetPartition*"></a>
  <h4 id="Apache_Ignite_Core_Cache_Affinity_IAffinityFunction_GetPartition_System_Object_" data-uid="Apache.Ignite.Core.Cache.Affinity.IAffinityFunction.GetPartition(System.Object)">GetPartition(Object)</h4>
  <div class="markdown level1 summary"><p>Gets partition number for a given key starting from 0. Partitioned caches
should make sure that keys are about evenly distributed across all partitions
from 0 to <a class="xref" href="Apache.Ignite.Core.Cache.Affinity.IAffinityFunction.html#Apache_Ignite_Core_Cache_Affinity_IAffinityFunction_Partitions">Partitions</a> for best performance.
<p>
Note that for fully replicated caches it is possible to segment key sets among different
grid node groups. In that case each node group should return a unique partition
number. However, unlike partitioned cache, mappings of keys to nodes in
replicated caches are constant and a node cannot migrate from one partition
to another.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">int GetPartition(object key)</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.Object</span></td>
        <td><span class="parametername">key</span></td>
        <td><p>Key to get partition for.</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.Int32</span></td>
        <td><p>Partition number for a given key.</p>
</td>
      </tr>
    </tbody>
  </table>
  <a id="Apache_Ignite_Core_Cache_Affinity_IAffinityFunction_RemoveNode_" data-uid="Apache.Ignite.Core.Cache.Affinity.IAffinityFunction.RemoveNode*"></a>
  <h4 id="Apache_Ignite_Core_Cache_Affinity_IAffinityFunction_RemoveNode_System_Guid_" data-uid="Apache.Ignite.Core.Cache.Affinity.IAffinityFunction.RemoveNode(System.Guid)">RemoveNode(Guid)</h4>
  <div class="markdown level1 summary"><p>Removes node from affinity. This method is called when it is safe to remove 
disconnected node from affinity mapping.</p>
</div>
  <div class="markdown level1 conceptual"></div>
  <h5 class="decalaration">Declaration</h5>
  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">void RemoveNode(Guid nodeId)</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.Guid</span></td>
        <td><span class="parametername">nodeId</span></td>
        <td><p>The node identifier.</p>
</td>
      </tr>
    </tbody>
  </table>
</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>
