EV::MakeMaker

Section: User Contributed Perl Documentation (3pm)
Updated: 2022-11-30
Index Return to Main Contents
 

NAME

EV::MakeMaker - MakeMaker glue for the C-level EV API  

SYNOPSIS

This allows you to access some libevent functionality from other perl modules.  

DESCRIPTION

For optimal performance, hook into EV at the C-level. You'll need to make changes to your "Makefile.PL", load "EV" in your "pm" file and add code to your "xs" / "c" file(s).  

HOW TO

 

Makefile.PL

  use EV::MakeMaker qw(ev_args);

  # ... set up %args ...

  WriteMakefile (ev_args (%args));

 

extension.pm

  use EV (); # imports optional

 

extension.xs

  #include "EVAPI.h"

  [...]

  BOOT:
    I_EV_API (HvNAME (GvSTASH (CvGV (cv))));

 

API

See the EVAPI.h <http://cvs.schmorp.de/EV/EV/EVAPI.h> header, which you should include instead of ev.h.

In short, all the functions and macros from ev.h should work, except that the trailing underscore macros ("EV_A_", "EV_DEFAULT_") are not available (except "EV_P_" :).

Multiplicity is enabled.

The "data" member in each watcher is of type "SV *" and not "void *" (this might change at some point).  

EXAMPLE

The EV::Glib, EV::ADNS and Glib::EV modules all give nice examples on how to use this module.

Here are some .xs fragments taken from EV::ADNS that should get you going:

  #include "EVAPI.h"

  static ev_prepare pw;
  static ev_idle iw;

  static void
  idle_cb (EV_P_ ev_idle *w, int revents)
  {
    ev_idle_stop (EV_A, w);
  }

  MODULE = ...

  BOOT:
  {
    I_EV_API ("EV::ADNS");
    ev_prepare_init (&pw, prepare_cb);
    ev_init (&iw, idle_cb); ev_set_priority (&iw, EV_MINPRI);
    ev_idle_start (EV_DEFAULT, &iw);
  }


 

Index

NAME
SYNOPSIS
DESCRIPTION
HOW TO
Makefile.PL
extension.pm
extension.xs
API
EXAMPLE

This document was created by man2html, using the manual pages.
Time: 13:23:09 GMT, April 20, 2024