MooseX::POE::Meta::Trait::Instance - A Instance Metaclass for MooseX::POE


MooseX-POE documentation Contained in the MooseX-POE distribution.

Index


Code Index:

NAME

Top

MooseX::POE::Meta::Trait::Instance - A Instance Metaclass for MooseX::POE

VERSION

Top

version 0.214

SYNOPSIS

Top

    Moose::Util::MetaRole::apply_metaclass_roles(
      for_class => $for_class,
      metaclass_roles => [ 
        'MooseX::POE::Meta::Trait::Class' 
      ],
      instance_metaclass_roles => [
        'MooseX::POE::Meta::Trait::Instance',
      ],
    );

DESCRIPTION

Top

A metaclass for MooseX::POE. This module is only of use to developers so there is no user documentation provided.

METHODS

Top

create_instance

get_slot_value

inline_slot_access

is_slot_initialized

set_slot_value

weaken_slot_value

get_session_id

METHODS

Top

AUTHORS

Top

COPYRIGHT AND LICENSE

Top


MooseX-POE documentation Contained in the MooseX-POE distribution.

package MooseX::POE::Meta::Trait::Instance;
BEGIN {
  $MooseX::POE::Meta::Trait::Instance::VERSION = '0.214';
}
# ABSTRACT: A Instance Metaclass for MooseX::POE

use Moose::Role;
use POE;

use Scalar::Util ();

sub get_session_id {
    my ( $self, $instance ) = @_;
    return $instance->{session_id};
}

sub get_slot_value {
    my ( $self, $instance, $slot_name ) = @_;
    return $instance->{heap}{$slot_name};
}

sub set_slot_value {
    my ( $self, $instance, $slot_name, $value ) = @_;
    $instance->{heap}{$slot_name} = $value;
}

sub is_slot_initialized {
    my ( $self, $instance, $slot_name, $value ) = @_;
    exists $instance->{heap}{$slot_name} ? 1 : 0;
}

sub weaken_slot_value {
    my ( $self, $instance, $slot_name ) = @_;
    Scalar::Util::weaken( $instance->{heap}{$slot_name} );
}

sub inline_slot_access {
    my ( $self, $instance, $slot_name ) = @_;
    sprintf '%s->{heap}{%s}', $instance, $slot_name;
}

no POE;
no Moose::Role;
1;



__END__