PoE :: Component :: pluggable

Een basisklasse voor het maken van plug-in-ingeschakelde POE-componenten
Download nu

PoE :: Component :: pluggable Rangschikking & Samenvatting

Advertentie

  • Rating:
  • Vergunning:
  • Perl Artistic License
  • Prijs:
  • FREE
  • Naam uitgever:
  • Chris Williams
  • Uitgever website:
  • http://search.cpan.org/~bingos/

PoE :: Component :: pluggable Tags


PoE :: Component :: pluggable Beschrijving

Een basisklasse voor het maken van plug-in-ingeschakelde POE-componenten POE :: COMPONENT :: SPECKBABLE is een PERL-module voor het maken van plug-in-ingeschakelde POE-componenten. Het is een generieke haven van PoE :: COMPONENT :: IRC's plug-in-systeem. Als uw component-evenementen naar geregistreerde POE-sessies verzendt, dan PoE :: Component :: Pluggable kan een goede pasvorm zijn voor u.Basisch gebruik zou betrekking hebben op Subclassing PoE :: COMPONENT :: SPOUTGABLE, ENKELLINGEN _Pluggable_Event () en het invoegen van _pluggable_process (), waar u ook gebeurtenissen uitsluitend van uw component verzenden, kunnen vervolgens plug-ins laden met behulp van de verstrekte plugin-methoden om gebeurtenissen die door het onderdeel van de component worden gegenereerd, kunnen gebruiken. Uw component als _pluggable_process () probeert eerst evenementen met lokale methode te verwerken. De retourwaarde van deze handlers heeft dezelfde betekenis als de retourwaarde van 'normale' plug-in handlers.synopsis # een eenvoudige POE-component die ping-events verzendt naar geregistreerde sessies # elke 30 seconden. Een nogal ingewikkeld voorbeeld om eerlijk te zijn. {pakket SimplePOCO; strikt gebruik; Gebruik basis qw (POE :: component :: pluggable); gebruik POE; Gebruik PoE :: Component :: SPOUTGABEL :: Constanten QW (: ALL); Sub spawn {mijn ($ pakket,% opts) = @_; $ OPTS {LC $ _} = Verwijderen $ OPTS {$ _} voor sleutels% kiest; mijn $ self = bless \% keurt, $ pakket; $ self -> _ pluggable_init (prefix => 'simplepoco_'); POE :: SESSIE-> Maken (Object_states => ,], heap => $ self,); return $ self; } Sub-shutdown {mijn ($ self) = @_; $ poe_kernel-> post ($ zelf -> {session_id}, 'shutdown'); } sub _pluggable_event {mijn ($ self) = @_; $ poe_kernel-> post ($ self -> {session_id}, '__send_event', @_); } sub _start {mijn ($ kernel, $ self) = @_ ; $ zelf -> {session_id} = $ _ -> ID (); if ($ self -> {alias}) {$ kernel-> alias_set ($ self -> {alias}); } else {$ kernel-> refcount_increment ($ self -> {session_id}, __package__); } $ kernel-> vertraging (_Send_ping => $ self -> {time} || 300); opbrengst; } sub _shutdown {mijn ($ kernel, $ self) = @_ ; $ self -> _ pluggable_destroy (); $ kernel-> alarm_remove_all (); $ self-> alias_remove ($ _) voor $ kernel-> alias_list (); $ kernel-> refcount_decrement ($ self -> {session_id}, __package__) if! $ self -> {alias}; $ kernel-> refcount_decrement ($ _, __package__) voor toetsen% {$ self -> {sessions}}; opbrengst; } subregister {mijn ($ kernel, $ afzender, $ zelf) = @_ ; mijn $ sender_id = $ sender-> id (); $ zelf -> {sessies} -> {$ sender_id} ++; if ($ self -> {sessions} -> {$ sender_id} == 1) {$ kernel-> refcount_increment ($ sender_id, __package__); $ kernel-> opbrengst (__ send_event => $ self -> {_ pluggable_prefix}. 'Geregistreerd', $ Sender_ID); } opbrengst; } subregister {mijn ($ kernel, $ afzender, $ zelf) = @_ ; mijn $ sender_id = $ sender-> id (); My $ Record = Verwijderen $ Self -> {Sessions} -> {$ sender_id}; if ($ record) {$ kernel-> refcount_decrement ($ sender_id, __package__); $ kernel-> opbrengst (__ send_event => $ self -> {_ pluggable_prefix}. 'Niet-geregistreerd', $ sender_id); } opbrengst; } sub __Send_event {mijn ($ kernel, $ zelf, $ evenement, @args) = @_ ; Retourneer 1 als $ self -> _ pluggable_process (ping => $ gebeurtenis, (@args)) == plugin_eat_all; $ kernel-> post ($ _, $ evenement, @args) voor sleutels% {$ self -> {sessions}}; } sub _Send_ping {mijn ($ kernel, $ self) = @_ ; mijn $ evenement = $ self -> {_ pluggable_prefix}. 'ping'; mijn @ARGS = ('Wakker worden slaperig'); $ kernel-> opbrengst (__ send_event => $ evenement, @args); $ kernel-> vertraging (_Send_ping => $ self -> {time} || 300); opbrengst; }} Gebruik POE; My $ Pluggable = SimplePoco-> Spawn (alias => 'Pluggable', tijd => 30,); POE :: SESSIE-> Maken (pakket_states => ,],); $ poe_kernel-> run (); sub _start {mijn ($ kernel, $ heap) = @_ ; $ kernel-> post (pluggable => 'register'); opbrengst; } Sub SimplePoco_Registreerde {Print "Yay, registreerden we "; Return;} sub SimplePoco_Ping {My ($ Sender, $ Text) = @_ ; Print" Kreeg '$ Text' van ", $ Sender-> ID," "; RETURN;} Vereisten: · Perl


PoE :: Component :: pluggable Gerelateerde software