<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<link rel="canonical" href="https://ignite.apache.org/releases/2.9.1/javadoc/org/apache/ignite/events/package-frame.html" />
<META NAME="ROBOTS" CONTENT="NOINDEX">
<!-- Yandex.Metrika counter -->
    <script type="text/javascript" >
      (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
      m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
      (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
    
      ym(72949126, "init", {
           clickmap:true,
           trackLinks:true,
           accurateTrackBounce:true,
           webvisor:true
      });
    </script>
    <noscript><div><img src="https://mc.yandex.ru/watch/72949126" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
    <!-- /Yandex.Metrika counter -->
<script type='text/javascript'>
    window.__lo_site_id = 284467;
    
      (function() {
        var wa = document.createElement('script'); wa.type = 'text/javascript'; wa.async = true;
        wa.src = 'https://d10lpsik1i8c69.cloudfront.net/w.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(wa, s);
        })();
      </script>


<!-- Generated by javadoc (1.8.0_261) on Wed Dec 09 14:33:12 MSK 2020 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>org.apache.ignite.events (Ignite 2.9.1)</title>
<meta name="date" content="2020-12-09">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
<link rel='shortcut icon' href='https://ignite.apache.org/favicon.ico'/>

<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>
<h1 class="bar"><a href="../../../../org/apache/ignite/events/package-summary.html" target="classFrame">org.apache.ignite.events</a></h1>
<div class="indexContainer">
<h2 title="Interfaces">Interfaces</h2>
<ul title="Interfaces">
<li><a href="Event.html" title="interface in org.apache.ignite.events" target="classFrame"><span class="interfaceName">Event</span></a></li>
<li><a href="EventType.html" title="interface in org.apache.ignite.events" target="classFrame"><span class="interfaceName">EventType</span></a></li>
</ul>
<h2 title="Classes">Classes</h2>
<ul title="Classes">
<li><a href="BaselineChangedEvent.html" title="class in org.apache.ignite.events" target="classFrame">BaselineChangedEvent</a></li>
<li><a href="BaselineConfigurationChangedEvent.html" title="class in org.apache.ignite.events" target="classFrame">BaselineConfigurationChangedEvent</a></li>
<li><a href="CacheConsistencyViolationEvent.html" title="class in org.apache.ignite.events" target="classFrame">CacheConsistencyViolationEvent</a></li>
<li><a href="CacheEvent.html" title="class in org.apache.ignite.events" target="classFrame">CacheEvent</a></li>
<li><a href="CacheQueryExecutedEvent.html" title="class in org.apache.ignite.events" target="classFrame">CacheQueryExecutedEvent</a></li>
<li><a href="CacheQueryReadEvent.html" title="class in org.apache.ignite.events" target="classFrame">CacheQueryReadEvent</a></li>
<li><a href="CacheRebalancingEvent.html" title="class in org.apache.ignite.events" target="classFrame">CacheRebalancingEvent</a></li>
<li><a href="CheckpointEvent.html" title="class in org.apache.ignite.events" target="classFrame">CheckpointEvent</a></li>
<li><a href="ClusterActivationEvent.html" title="class in org.apache.ignite.events" target="classFrame">ClusterActivationEvent</a></li>
<li><a href="ClusterStateChangeEvent.html" title="class in org.apache.ignite.events" target="classFrame">ClusterStateChangeEvent</a></li>
<li><a href="ClusterStateChangeStartedEvent.html" title="class in org.apache.ignite.events" target="classFrame">ClusterStateChangeStartedEvent</a></li>
<li><a href="ClusterTagUpdatedEvent.html" title="class in org.apache.ignite.events" target="classFrame">ClusterTagUpdatedEvent</a></li>
<li><a href="DeploymentEvent.html" title="class in org.apache.ignite.events" target="classFrame">DeploymentEvent</a></li>
<li><a href="DiscoveryEvent.html" title="class in org.apache.ignite.events" target="classFrame">DiscoveryEvent</a></li>
<li><a href="EventAdapter.html" title="class in org.apache.ignite.events" target="classFrame">EventAdapter</a></li>
<li><a href="JobEvent.html" title="class in org.apache.ignite.events" target="classFrame">JobEvent</a></li>
<li><a href="PageReplacementStartedEvent.html" title="class in org.apache.ignite.events" target="classFrame">PageReplacementStartedEvent</a></li>
<li><a href="TaskEvent.html" title="class in org.apache.ignite.events" target="classFrame">TaskEvent</a></li>
<li><a href="TransactionStateChangedEvent.html" title="class in org.apache.ignite.events" target="classFrame">TransactionStateChangedEvent</a></li>
<li><a href="WalSegmentArchivedEvent.html" title="class in org.apache.ignite.events" target="classFrame">WalSegmentArchivedEvent</a></li>
<li><a href="WalSegmentCompactedEvent.html" title="class in org.apache.ignite.events" target="classFrame">WalSegmentCompactedEvent</a></li>
</ul>
</div>
</body>
</html>
