Проблемы с Perl XML-RPC в сочетании с отражением Perl? - PullRequest
0 голосов
/ 22 мая 2011

Я использую Frontier :: Daemon для создания тестового библиотечного сервера для инфраструктуры автоматизации тестирования Robot Framework.Я получил тестовый библиотечный сервер, работающий для локального выполнения кода, но когда он запускается / выполняется через XML-RPC, то я сталкиваюсь с проблемами.Частично проблема может заключаться также в том, что я использую Perl-отражение для выполнения тестовых команд.

Возможно, RPC :: XML может быть лучше, но в то время я разрабатывалсервер, Frontier :: Daemon, казалось, легче начать с.

Код отражения Perl был заимствован из тем, размещенных на этом сайте, а также на странице Википедии, посвященной отражению кода (раздел Perl).

Код размещен на Код Google Вы можете просмотреть код или проверить его для ознакомления.Проблема описана более подробно на сайте проекта .

Я надеялся, что сообщество разработчиков Perl может дать мне несколько советов об источнике проблемы и о том, как ее исправить.

Спасибо, Дейв

1 Ответ

1 голос
/ 23 мая 2011

Есть пара вещей, которые вам не хватает.Во-первых, Frontier :: Daemon вызывает «методы», которые вы предоставляете, как простые вызовы подпрограмм, но ваши два предоставленных метода ожидают вызова в качестве методов вашего объекта удаленного сервера.Измените свой код, чтобы сделать это:

my $svr = Frontier::Daemon->new(
    methods => {
        get_keyword_names => sub { $self->get_keyword_names(@_) },
        run_keyword => sub { $self->run_keyword(@_) },
    },
...

для вызова ваших методов так, как они ожидают.

Во-вторых, ваши get_keyword_names пытаются вернуть массив, но интерфейс, который вы используете, кажется,разрешить только одно возвращаемое значение и вызывает методы в скалярном контексте, заставляя get_keyword_names возвращать количество элементов в массиве.Я думаю, что вы хотите вернуть ссылку на массив вместо:

return \@methods;
...