﻿<!DOCTYPE html>
<!--[if IE]><![endif]-->
<html>
  
  <head>
<link rel="canonical" href="https://ignite.apache.org/releases/2.8.0/dotnetdoc/api/Apache.Ignite.Core.Events.html" />
<META NAME="ROBOTS" CONTENT="NOINDEX">



    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>Namespace Apache.Ignite.Core.Events
   | Apache Ignite.NET </title>
    <meta name="viewport" content="width=device-width">
    <meta name="title" content="Namespace Apache.Ignite.Core.Events
   | 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.Events">
  
  <h1 id="Apache_Ignite_Core_Events" data-uid="Apache.Ignite.Core.Events" class="text-break">Namespace Apache.Ignite.Core.Events
  </h1>
  <div class="markdown level0 summary"></div>
  <div class="markdown level0 conceptual"></div>
  <div class="markdown level0 remarks"></div>
    <h3 id="classes">Classes
  </h3>
      <h4><a class="xref" href="Apache.Ignite.Core.Events.CacheEvent.html">CacheEvent</a></h4>
      <section><p>In-memory database (cache) event.</p>
</section>
      <h4><a class="xref" href="Apache.Ignite.Core.Events.CacheQueryExecutedEvent.html">CacheQueryExecutedEvent</a></h4>
      <section><p>Cache query execution event.</p>
</section>
      <h4><a class="xref" href="Apache.Ignite.Core.Events.CacheQueryReadEvent.html">CacheQueryReadEvent</a></h4>
      <section><p>Cache query read event.</p>
</section>
      <h4><a class="xref" href="Apache.Ignite.Core.Events.CacheRebalancingEvent.html">CacheRebalancingEvent</a></h4>
      <section><p>In-memory database (cache) rebalancing event. Rebalance event happens every time there is a change</p>
</section>
      <h4><a class="xref" href="Apache.Ignite.Core.Events.CheckpointEvent.html">CheckpointEvent</a></h4>
      <section><p>Grid checkpoint event.</p>
</section>
      <h4><a class="xref" href="Apache.Ignite.Core.Events.DiscoveryEvent.html">DiscoveryEvent</a></h4>
      <section><p>Grid discovery event.</p>
</section>
      <h4><a class="xref" href="Apache.Ignite.Core.Events.EventBase.html">EventBase</a></h4>
      <section><p>Base event implementation.</p>
</section>
      <h4><a class="xref" href="Apache.Ignite.Core.Events.EventType.html">EventType</a></h4>
      <section><p>Contains event type constants. The decision to use class and not enumeration is dictated 
by allowing users to create their own events and/or event types which would be impossible with enumerations.
<p>
Note that this interface defines not only individual type constants, 
but arrays of types as well to be conveniently used with <a class="xref" href="Apache.Ignite.Core.Events.IEvents.html">IEvents</a> methods.
<p>
NOTE: all types in range <strong>from 1 to 1000 are reserved</strong> for internal Ignite events 
and should not be used by user-defined events.</p>
</section>
      <h4><a class="xref" href="Apache.Ignite.Core.Events.JobEvent.html">JobEvent</a></h4>
      <section><p>Ignite job event.</p>
</section>
      <h4><a class="xref" href="Apache.Ignite.Core.Events.LocalEventListener.html">LocalEventListener</a></h4>
      <section><p>Abstract local event listener holder for <a class="xref" href="Apache.Ignite.Core.IgniteConfiguration.html#Apache_Ignite_Core_IgniteConfiguration_LocalEventListeners">LocalEventListeners</a>.
Use <a class="xref" href="Apache.Ignite.Core.Events.LocalEventListener-1.html">LocalEventListener&lt;T&gt;</a> derived class.</p>
</section>
      <h4><a class="xref" href="Apache.Ignite.Core.Events.LocalEventListener-1.html">LocalEventListener&lt;T&gt;</a></h4>
      <section><p>Generic local event listener holder, see <a class="xref" href="Apache.Ignite.Core.IgniteConfiguration.html#Apache_Ignite_Core_IgniteConfiguration_LocalEventListeners">LocalEventListeners</a>.</p>
</section>
      <h4><a class="xref" href="Apache.Ignite.Core.Events.MemoryEventStorageSpi.html">MemoryEventStorageSpi</a></h4>
      <section><p>In-memory event storage.</p>
</section>
      <h4><a class="xref" href="Apache.Ignite.Core.Events.NoopEventStorageSpi.html">NoopEventStorageSpi</a></h4>
      <section><p>No-op event storage interface, does not store anything.</p>
</section>
      <h4><a class="xref" href="Apache.Ignite.Core.Events.TaskEvent.html">TaskEvent</a></h4>
      <section><p>Ignite task event.</p>
</section>
    <h3 id="interfaces">Interfaces
  </h3>
      <h4><a class="xref" href="Apache.Ignite.Core.Events.IEvent.html">IEvent</a></h4>
      <section><p>Represents a Ignite event.</p>
</section>
      <h4><a class="xref" href="Apache.Ignite.Core.Events.IEventFilter-1.html">IEventFilter&lt;T&gt;</a></h4>
      <section><p>Represents an event filter.</p>
</section>
      <h4><a class="xref" href="Apache.Ignite.Core.Events.IEventListener-1.html">IEventListener&lt;T&gt;</a></h4>
      <section><p>Represents an event listener.</p>
</section>
      <h4><a class="xref" href="Apache.Ignite.Core.Events.IEvents.html">IEvents</a></h4>
      <section><p>Provides functionality for event notifications on nodes defined by <a class="xref" href="Apache.Ignite.Core.Events.IEvents.html#Apache_Ignite_Core_Events_IEvents_ClusterGroup">ClusterGroup</a>.
<p>
All members are thread-safe and may be used concurrently from multiple threads.</p>
</section>
      <h4><a class="xref" href="Apache.Ignite.Core.Events.IEventStorageSpi.html">IEventStorageSpi</a></h4>
      <section><p>Manages local event storage.
<p>
Only predefined implementations are supported: 
<a class="xref" href="Apache.Ignite.Core.Events.NoopEventStorageSpi.html">NoopEventStorageSpi</a>, <a class="xref" href="Apache.Ignite.Core.Events.MemoryEventStorageSpi.html">MemoryEventStorageSpi</a>.</p>
</section>
</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 - 2019 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>
