NAME

RPC::Switch::Client::Tiny::SessionCache - Session tracking for async childs

SYNOPSIS

  use RPC::Switch::Client::Tiny::SessionCache;

  sub trace_cb {
	my ($type, $msg) = @_;
	printf "%s: %s\n", $type, to_json($msg, {pretty => 0, canonical => 1});
  }

  my $cache = RPC::Switch::Client::Tiny::SessionCache->new(trace_cb => \&trace_cb);

  my $expires = strftime('%Y-%m-%dT%H:%M:%SZ', gmtime(time()+1));
  my $session = $cache->session_new({id => '123', expires => $expires});
  my $child = {pid => $$, id => '1', start => time(), session => $session};

  if ($cache->session_put($child)) {
	$cache->expire_insert($child->{session});
  }

  if ($child = $cache->session_get($session->{id})) {
	$cache->expire_remove($child->{session});
  }

  while ($child = $cache->expired_dequeue()) {
	delete $child->{session};
  }

AUTHORS

Barnim Dzwillo @ Strato AG