HEX

Warning: set_time_limit() [function.set-time-limit]: Cannot set time limit - prohibited by configuration in /home/u547966/brikov.ru/www/wp-content/plugins/admin-menu-editor/menu-editor.php on line 745
Server: Apache
System: Linux 4.19.0-0.bpo.9-amd64 x86_64 at red40
User: u547966 (5490)
PHP: 5.3.29-mh2
Disabled: syslog, dl, popen, proc_open, proc_nice, proc_get_status, proc_close, proc_terminate, posix_mkfifo, chown, chgrp, accelerator_reset, opcache_reset, accelerator_get_status, opcache_get_status, pcntl_alarm, pcntl_fork, pcntl_waitpid, pcntl_wait, pcntl_wifexited, pcntl_wifstopped, pcntl_wifsignaled, pcntl_wifcontinued, pcntl_wexitstatus, pcntl_wtermsig, pcntl_wstopsig, pcntl_signal, pcntl_signal_dispatch, pcntl_get_last_error, pcntl_strerror, pcntl_sigprocmask, pcntl_sigwaitinfo, pcntl_sigtimedwait, pcntl_exec, pcntl_getpriority, pcntl_setpriority
Upload Files
File: //usr/share/doc/libsoap-lite-perl/examples/My/Chat.pm
package My::Chat;

my @messages;
my %users;

sub join {
  my $self = shift;
  my $class = ref($self) || $self;
  my $nick = shift      or die "User cannot join chat anonymously\n";
  !exists $users{$nick} or die "User '$nick' is already in chatroom. Choose another nick\n";
  $users{$nick} = time;
  my $messages = shift || 10;
  bless {
    _nick        => $nick,
    _users       => \%users,
    _messages    => \@messages,
    _lastmessage => ($#messages > $messages ? $#messages - $messages : -1),
  } => $class;
}

sub get {
  my $self = shift;
  my $nick = $self->{_nick};
  my @mess = grep {exists $users{$_->[0]} && $_->[0] ne $nick} @messages[($self->{_lastmessage}+1)..$#messages];
  $self->{_lastmessage} = $#messages;
  [@mess];
}

sub send {
  push @messages, [shift->{_nick} => shift, time];
  splice(@messages, 0, -12); # we'll keep only last 12 messages
}

sub whois { shift->{_users} }

sub quit { my $self = shift; delete $self->{_users}->{$self->{_nick}} }

sub DESTROY { shift->quit }

1;