Grpc-XS

 view release on metacpan or  search on metacpan

examples/route_guide/t/04-route_chat.t  view on Meta::CPAN

#!perl -w
use strict;
use Data::Dumper;

use Test::More;

use ProtobufXS::routeguide;
use ProtobufXS::routeguide::Service::RouteGuide;

plan tests => 10;

sub printFeature
{
	my $feature = shift;

	my $name = $feature->{name};
  if (!$name) {
    $name = "no feature";
  } else {
    $name = "feature called $name";
  }
 	print sprintf("Found %s \n  at %f, %f\n", $name,
                ($feature->{location}->{latitude}||0) / 10000000,
                ($feature->{location}->{longitude}||0) / 10000000);
}

###############
## routeChat ##
###############

# Run the routeChat demo. Send some chat messages, and print any chat
# messages that are sent from the server.

my $client = new ProtobufXS::routeguide::Service::RouteGuide('localhost:10000',
																															credentials => undef );

my $call = $client->RouteChat();
my @notes = (
	{
		longitude => 1,
		latitude  => 1,
		message   => 'first message'
	},
	{
		longitude => 1,
		latitude  => 2,
		message   => 'second message'
	},
	{
		longitude => 1,
		latitude  => 1,
		message   => 'third message'
	},
	{
		longitude => 1,
		latitude  => 1,
		message   => 'fourth message'
	},
);

foreach my $n (@notes) {
	my $point = new ProtobufXS::routeguide::Point();
	$point->set_latitude($n->{latitude});
	$point->set_longitude($n->{longitude});

	my $route_note = new ProtobufXS::routeguide::RouteNote();
	$route_note->set_location($point);
	$route_note->set_message($n->{message});
	# send a bunch of messages to the server
	$call->write($route_note);
}
$call->writesDone();

## read from the server until there's no more (with a maximum of 10)
my $count = 10;
while (my $route_note_reply = $call->read()) {
	ok($route_note_reply,"did not receive reply");
	print STDERR Dumper($route_note_reply->to_hashref());
	$count--; last if (!$count);
}



( run in 0.768 second using v1.01-cache-2.11-cpan-39bf76dae61 )