text: // Copyright 2016 The Fuchsia Authors
  //
  // Use of this source code is governed by a MIT-style
  // license that can be found in the LICENSE file or at
  // https://opensource.org/licenses/MIT
  
  #ifndef ZIRCON_KERNEL_OBJECT_INCLUDE_OBJECT_EVENT_DISPATCHER_H_
  #define ZIRCON_KERNEL_OBJECT_INCLUDE_OBJECT_EVENT_DISPATCHER_H_
  
  #include <sys/types.h>
  #include <zircon/rights.h>
  #include <zircon/types.h>
  
  #include <object/dispatcher.h>
  #include <object/handle.h>
  
  class EventDispatcher final
      : public SoloDispatcher<EventDispatcher, ZX_DEFAULT_EVENT_RIGHTS, ZX_EVENT_SIGNALED> {
   public:
    static zx_status_t Create(uint32_t options, KernelHandle<EventDispatcher>* handle,
                              zx_rights_t* rights);
  
    ~EventDispatcher() final;
    zx_obj_type_t get_type() const final { return ZX_OBJ_TYPE_EVENT; }
  
   private:
    explicit EventDispatcher(uint32_t options);
  };
  
  fbl::RefPtr<EventDispatcher> GetMemPressureEvent(uint32_t kind);
  
  #endif  // ZIRCON_KERNEL_OBJECT_INCLUDE_OBJECT_EVENT_DISPATCHER_H_
  