The Perl Advent Calendar needs more articles for 2022. Submit your idea today!

NAME

Zing::Types - Type Library

ABSTRACT

Type Library

SYNOPSIS

  package main;

  use Zing::Types;

  1;

DESCRIPTION

This package provides type constraint for the Zing process management system.

LIBRARIES

This package uses type constraints from:

Types::Standard

CONSTRAINTS

This package declares the following type constraints:

app

  App

This type is defined in the Zing::Types library.

app parent
  Object
app composition
  InstanceOf["Zing::App"]
app example #1
  # given: synopsis

  use Zing::App;

  my $app = Zing::App->new;

channel

  Channel

This type is defined in the Zing::Types library.

channel parent
  Object
channel composition
  InstanceOf["Zing::Channel"]
channel example #1
  # given: synopsis

  use Zing::Channel;

  my $chan = Zing::Channel->new(name => 'share');

cli

  Cli

This type is defined in the Zing::Types library.

cli parent
  Object
cli composition
  InstanceOf["Zing::Cli"]
cli example #1
  # given: synopsis

  use Zing::Cli;

  my $cli = Zing::Cli->new;

cursor

  Cursor

This type is defined in the Zing::Types library.

cursor parent
  Object
cursor composition
  InstanceOf["Zing::Cursor"]
cursor example #1
  # given: synopsis

  use Zing::Cursor;
  use Zing::Lookup;

  my $cursor = Zing::Cursor->new(
    lookup => Zing::Lookup->new(
      name => 'people'
    )
  );

daemon

  Daemon

This type is defined in the Zing::Types library.

daemon parent
  Object
daemon composition
  InstanceOf["Zing::Daemon"]
daemon example #1
  # given: synopsis

  use Zing::Cartridge;
  use Zing::Daemon;

  my $daemon = Zing::Daemon->new(
    cartridge => Zing::Cartridge->new(name => 'myapp')
  );

data

  Data

This type is defined in the Zing::Types library.

data parent
  Object
data composition
  InstanceOf["Zing::Data"]
data example #1
  # given: synopsis

  use Zing::Data;
  use Zing::Process;

  my $data = Zing::Data->new(name => 'random');

domain

  Domain

This type is defined in the Zing::Types library.

domain parent
  Object
domain composition
  InstanceOf["Zing::Domain"]
domain example #1
  # given: synopsis

  use Zing::Domain;

  my $domain = Zing::Domain->new(name => 'exchange');

encoder

  Encoder

This type is defined in the Zing::Types library.

encoder parent
  Object
encoder composition
  InstanceOf["Zing::Encoder"]
encoder example #1
  # given: synopsis

  use Zing::Encoder;

  my $encoder = Zing::Encoder->new;

entity

  Entity

This type is defined in the Zing::Types library.

entity parent
  Object
entity composition
  InstanceOf["Zing::Entity"]
entity example #1
  # given: synopsis

  use Zing::Entity;

  my $app = Zing::Entity->new;

env

  Env

This type is defined in the Zing::Types library.

env parent
  Object
env composition
  InstanceOf["Zing::Env"]
env example #1
  # given: synopsis

  use Zing::Env;

  my $env = Zing::Env->new;

error

  Error

This type is defined in the Zing::Types library.

error parent
  Object
error composition
  InstanceOf["Zing::Error"]
error example #1
  # given: synopsis

  use Zing::Error;

  my $error = Zing::Error->new;

flow

  Flow

This type is defined in the Zing::Types library.

flow parent
  Object
flow composition
  InstanceOf["Zing::Flow"]
flow example #1
  # given: synopsis

  use Zing::Flow;

  my $flow = Zing::Flow->new(name => 'step_1', code => sub {1});

fork

  Fork

This type is defined in the Zing::Types library.

fork parent
  Object
fork composition
  InstanceOf["Zing::Fork"]
fork example #1
  # given: synopsis

  use Zing::Fork;
  use Zing::Process;

  my $scheme = ['MyApp', [], 1];
  my $fork = Zing::Fork->new(scheme => $scheme, parent => Zing::Process->new);

id

  ID

This type is defined in the Zing::Types library.

id composition
  InstanceOf["Zing::ID"]
id example #1
  # given: synopsis

  use Zing::ID;

  my $id = Zing::ID->new;

interupt

  Interupt

This type is defined in the Zing::Types library.

interupt composition
  Enum[qw(CHLD HUP INT QUIT TERM USR1 USR2)]
interupt example #1
  # given: synopsis

  'QUIT'

kernel

  Kernel

This type is defined in the Zing::Types library.

kernel parent
  Object
kernel composition
  InstanceOf["Zing::Kernel"]
kernel example #1
  # given: synopsis

  use Zing::Kernel;

  my $kernel = Zing::Kernel->new(scheme => ['MyApp', [], 1]);

key

  Key

This type is defined in the Zing::Types library.

key parent
  Str
key composition
  StrMatch[qr(^[^\:\*]+:[^\:\*]+:[^\:\*]+:[^\:\*]+:[^\:\*]+$)]
key example #1
  # given: synopsis

  "zing:main:global:repo:random"

keyval

  KeyVal

This type is defined in the Zing::Types library.

keyval parent
  Object
keyval composition
  InstanceOf["Zing::KeyVal"]
keyval example #1
  # given: synopsis

  use Zing::KeyVal;

  my $keyval = Zing::KeyVal->new(name => 'notes');

logger

  Logger

This type is defined in the Zing::Types library.

logger parent
  Object
logger composition
  InstanceOf["Zing::Logger"]
logger example #1
  # given: synopsis

  use FlightRecorder;

  my $logger = FlightRecorder->new;

logic

  Logic

This type is defined in the Zing::Types library.

logic parent
  Object
logic composition
  InstanceOf["Zing::Logic"]
logic example #1
  # given: synopsis

  use Zing::Logic;
  use Zing::Process;

  my $logic = Zing::Logic->new(process => Zing::Process->new);

lookup

  Lookup

This type is defined in the Zing::Types library.

lookup parent
  Object
lookup composition
  InstanceOf["Zing::Lookup"]
lookup example #1
  # given: synopsis

  use Zing::Lookup;

  my $lookup = Zing::Lookup->new(
    name => 'users'
  );

loop

  Loop

This type is defined in the Zing::Types library.

loop parent
  Object
loop composition
  InstanceOf["Zing::Loop"]
loop example #1
  # given: synopsis

  use Zing::Flow;
  use Zing::Loop;

  my $loop = Zing::Loop->new(
    flow => Zing::Flow->new(name => 'init', code => sub {1})
  );

mailbox

  Mailbox

This type is defined in the Zing::Types library.

mailbox parent
  Object
mailbox composition
  InstanceOf["Zing::Mailbox"]
mailbox example #1
  # given: synopsis

  use Zing::Mailbox;
  use Zing::Process;

  my $mailbox = Zing::Mailbox->new(name => 'shared');

meta

  Meta

This type is defined in the Zing::Types library.

meta parent
  Object
meta composition
  InstanceOf["Zing::Meta"]
meta example #1
  # given: synopsis

  use Zing::Meta;

  my $meta = Zing::Meta->new(name => '$process');

name

  Name

This type is defined in the Zing::Types library.

name parent
  Str
name composition
  StrMatch[qr(^[^\:\*]+$)]
name example #1
  # given: synopsis

  "main"

poll

  Poll

This type is defined in the Zing::Types library.

poll parent
  Object
poll composition
  InstanceOf["Zing::Poll"]
poll example #1
  # given: synopsis

  use Zing::Poll;
  use Zing::KeyVal;

  my $keyval = Zing::KeyVal->new(name => 'notes');
  my $poll = Zing::Poll->new(name => 'last-week', repo => $keyval);

process

  Process

This type is defined in the Zing::Types library.

process parent
  Object
process composition
  InstanceOf["Zing::Process"]
process example #1
  # given: synopsis

  use Zing::Process;

  my $process = Zing::Process->new;

pubsub

  PubSub

This type is defined in the Zing::Types library.

pubsub parent
  Object
pubsub composition
  InstanceOf["Zing::PubSub"]
pubsub example #1
  # given: synopsis

  use Zing::PubSub;

  my $pubsub = Zing::PubSub->new(name => 'tasks');

queue

  Queue

This type is defined in the Zing::Types library.

queue parent
  Object
queue composition
  InstanceOf["Zing::Queue"]
queue example #1
  # given: synopsis

  use Zing::Queue;

  my $queue = Zing::Queue->new(name => 'tasks');

repo

  Repo

This type is defined in the Zing::Types library.

repo parent
  Object
repo composition
  InstanceOf["Zing::Repo"]
repo example #1
  # given: synopsis

  use Zing::Repo;

  my $repo = Zing::Repo->new(name => 'repo');

schedule

  Schedule

This type is defined in the Zing::Types library.

schedule composition
  Tuple[Str, ArrayRef[Str], HashRef]
schedule example #1
  # given: synopsis

  # at 00:00 on day-of-month 1 in january

  ['0 0 1 1 *', ['task_queue'], { task => 'execute' }];
schedule example #2
  # given: synopsis

  # at 00:00 on saturday

  ['0 0 * * SAT', ['task_queue'], { task => 'execute' }];
schedule example #3
  # given: synopsis

  # at minute 0 (hourly)

  ['0 * * * *', ['task_queue'], { task => 'execute' }];

scheme

  Scheme

This type is defined in the Zing::Types library.

scheme composition
  Tuple[Str, ArrayRef, Int]
scheme example #1
  # given: synopsis

  ['MyApp', [], 1_000];
  Search

This type is defined in the Zing::Types library.

search parent
  Object
search composition
  InstanceOf["Zing::Search"]
search example #1
  # given: synopsis

  use Zing::Search;

  my $search = Zing::Search->new;

space

  Space

This type is defined in the Zing::Types library.

space parent
  Object
space composition
  InstanceOf["Zing::Space"]
space example #1
  # given: synopsis

  use Data::Object::Space;

  Data::Object::Space->new('MyApp');

store

  Store

This type is defined in the Zing::Types library.

store parent
  Object
store composition
  InstanceOf["Zing::Store"]
store example #1
  # given: synopsis

  use Zing::Store;

  my $store = Zing::Store->new;

table

  Table

This type is defined in the Zing::Types library.

table parent
  Object
table composition
  InstanceOf["Zing::Table"]
table example #1
  # given: synopsis

  use Zing::Table;

  my $table = Zing::Table->new(
    name => 'users'
  );

term

  Term

This type is defined in the Zing::Types library.

term parent
  Object
term composition
  InstanceOf["Zing::Term"]
term example #1
  # given: synopsis

  bless {}, 'Zing::Term';

watcher

  Watcher

This type is defined in the Zing::Types library.

watcher parent
  Object
watcher composition
  InstanceOf["Zing::Watcher"]
watcher example #1
  # given: synopsis

  bless {}, 'Zing::Watcher';

worker

  Worker

This type is defined in the Zing::Types library.

worker parent
  Object
worker composition
  InstanceOf["Zing::Worker"]
worker example #1
  # given: synopsis

  bless {}, 'Zing::Worker';

zing

  Zing

This type is defined in the Zing::Types library.

zing parent
  Object
zing composition
  InstanceOf["Zing::Zing"]
zing example #1
  # given: synopsis

  use Zing;

  my $zing = Zing->new(scheme => ['MyApp', [], 1]);

AUTHOR

Al Newkirk, awncorp@cpan.org

LICENSE

Copyright (C) 2011-2019, Al Newkirk, et al.

This is free software; you can redistribute it and/or modify it under the terms of the The Apache License, Version 2.0, as elucidated in the "license file".

PROJECT

Wiki

Project

Initiatives

Milestones

Contributing

Issues