#!/usr/bin/env perl use strict; use warnings; use AnyEvent; use AnyEvent::Log; use AnyEvent::Handle; use AnyEvent::Socket; use EV; use Data::Dumper; $AnyEvent::Log::FILTER->level ("trace"); my $handle; my @queue; tcp_connect "127.0.0.1", 9999, sub { my ($fh) = @_; print "Before push_write\n"; push (@queue, "XX\n"); push (@queue, "YY\n"); push (@queue, "ZZ\n"); print "After push_write\n"; $handle = new AnyEvent::Handle ( fh => $fh, tls => "connect", tls_ctx => { verify => 0 }, on_error => sub { my ($xhandle, $fatal, $message) = @_; print "on_error: ($xhandle) ($fatal) ($message)\n"; exit 1; }, on_eof => sub { my ($handle) = @_; print "on_eof:\n"; exit 0; }, on_drain => sub { my ($handle) = @_; print "on_drain:\n"; if (@queue) { my $write = shift @queue; print "Write :$write"; $handle->push_write ($write); } else { print "Queue is empty\n"; $handle->push_shutdown (); } }, on_starttls => sub { my ($handle, $success, $error) = @_; print "on_starttls ($success) ($error)\n"; return; } ); }; EV::run;