# NAME

PawsX::Waiter - A Waiter library for Paws

# SYNOPSIS
   use PawsX::Waiter;

     my $client = Paws->new(
        config => {
            region      => 'ap-south-1'
        }
     );

     my $service = $client->service('ELB');

     # Apply waiter role to Paws class
     PawsX::Waiter->meta->apply($service);
     my $response = $service->RegisterInstancesWithLoadBalancer(
        LoadBalancerName => 'test-elb',
        Instances        => [ { InstanceId => 'i-0xxxxx'  } ]
     );

     my $waiter = $service->GetWaiter('InstanceInService');
     $waiter->wait(
        {
           LoadBalancerName => 'test-elb',
           Instances        => [ { InstanceId => 'i-0xxxxx' } ],
       }
     );


# DESCRIPTION

Waiters are utility methods that poll for a particular state to occur on a client. Waiters can fail after a number of attempts at a polling interval defined for the service client.

# METHODS

## GetWaiter

   my $waiter = $service->GetWaiter('InstanceInService');


This method returns a new PawsX::Waiter object and It has the following attributes. You can configure the waiter behaviour with this.

### delay(Int)

   $waiter->delay(10);


Number of seconds to delay between polling attempts. Each waiter has a default delay configuration value, but you may need to modify this setting for specific use cases.

### maxAttempts(Int)

   $waiter->maxAttempts(100);


Maximum number of polling attempts to issue before failing the waiter. Each waiter has a default maxAttempts configuration value,
but you may need to modify this setting for specific use cases.

### wait(HashRef)

    $waiter->wait(
        {
           LoadBalancerName => 'test-elb',
           Instances        => [ { InstanceId => 'i-0xxxxx' } ],
       }
     );

Block until the waiter completes or fails.Note that this might throw a PawsX::Exception::\* if the waiter fails.

# SEE ALSO

- [Paws](https://metacpan.org/pod/Paws)

# AUTHOR

Prajith Ndz <[email protected]>

# COPYRIGHT

Copyright (C) Prajith Ndz.

# LICENSE

This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.