Event::MakeMaker man page on Fedora

Man page or keyword search:  
man Server   31170 pages
apropos Keyword Search (all sections)
Output format
Fedora logo
[printable version]

Event::MakeMaker(3)   User Contributed Perl Documentation  Event::MakeMaker(3)

NAME
       Event::MakeMaker - MakeMaker glue for the C-level Event API

SYNOPSIS
       This is an advanced feature of Event.

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

WARNING
       When you hook in at the C-level you get a huge performance gain, but
       you also reduce the chances that your code will work unmodified with
       newer versions of "perl" or "Event".  This may or may not be a problem.
       Just be aware, and set your expectations accordingly.

HOW TO
   Makefile.PL
	 use Event::MakeMaker qw(event_args);

	 # ... set up %args ...

	 WriteMakefile(event_args(%args));

   XS
	 #include "EventAPI.h"

	 BOOT:
	   I_EVENT_API("YourModule");

   API (v21)
	struct EventAPI {
	   I32 Ver;

	   /* EVENTS */
	   void (*queue	  )(pe_event *ev);
	   void (*start	  )(pe_watcher *ev, int repeat);
	   void (*now	  )(pe_watcher *ev);
	   void (*stop	  )(pe_watcher *ev, int cancel_events);
	   void (*cancel  )(pe_watcher *ev);
	   void (*suspend )(pe_watcher *ev);
	   void (*resume  )(pe_watcher *ev);

	   /* All constructors optionally take a stash and template.  Either
	     or both can be NULL.  The template should not be a reference. */
	   pe_idle     *(*new_idle  )(HV*, SV*);
	   pe_timer    *(*new_timer )(HV*, SV*);
	   pe_io       *(*new_io    )(HV*, SV*);
	   pe_var      *(*new_var   )(HV*, SV*);
	   pe_signal   *(*new_signal)(HV*, SV*);

	   /* TIMEABLE */
	   void (*tstart)(pe_timeable *);
	   void (*tstop)(pe_timeable *);

	   /* HOOKS */
	   pe_qcallback *(*add_hook)(char *which, void *cb, void *ext_data);
	   void (*cancel_hook)(pe_qcallback *qcb);

	   /* STATS */
	   void (*install_stats)(pe_event_stats_vtbl *esvtbl);
	   void (*collect_stats)(int yes);
	   pe_ring *AllWatchers;

	   /* TYPEMAP */
	   SV	*(*watcher_2sv)(pe_watcher *wa);
	   void *(*sv_2watcher)(SV *sv);
	   SV	*(*event_2sv)(pe_event *ev);
	   void *(*sv_2event)(SV *sv);
	};

   EXAMPLE
	 static pe_io *X11_ev=0;

	 static void x_server_dispatch(void *ext_data)
	 { ... }

	 if (!X11_ev) {
	   X11_ev = GEventAPI->new_io(0,0);
	   X11_ev->poll = PE_R;
	   sv_setpv(X11_ev->base.desc, "X::Server");
	   X11_ev->base.callback = (void*) x_server_dispatch;
	   X11_ev->base.ext_data = <whatever>;
	   X11_ev->base.prio = PE_PRIO_NORMAL;
	 }
	 X11_ev->fd = x_fd;
	 GEventAPI->resume((pe_event*) X11_ev);
	 GEventAPI->start((pe_event*) X11_ev, 0);

   BUT I NEED A NEW TYPE OF WATCHER FOR MY INTERGALACTIC INFEROMETER
       I'd prefer not to export the entire Event.h apparatus in favor of
       minimizing interdependencies.  If you really, really need to create a
       new type of watcher send your problem analysis to the mailing list!

perl v5.14.2			  2007-05-22		   Event::MakeMaker(3)
[top]

List of man pages available for Fedora

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net