Форум программистов, компьютерный форум, киберфорум
Наши страницы
Lua
Войти
Регистрация
Восстановить пароль
 
ShadoWalkeR
0 / 0 / 0
Регистрация: 02.03.2016
Сообщений: 1
1

Обмен данными между функциями в Lua для Asterisk

02.03.2016, 08:54. Просмотров 696. Ответов 0
Метки нет (Все метки)

Здравствуйте!

Я столкнулся со следующей проблемой - есть 2 функции и мне надо передать между ними ассоциативный массив (я знаю что в Lua это просто таблицы, привык уже так называть данный вид данных). К сожалению для перехода из одной функции в другую используются только внутренние средства Asterisk, поэтому существуют следующие ограничения - для обмена данными есть только строковые переменные канала максимум в 256 символов и доступ к _G в Lua. Поэтому появился следующий код:

Кликните здесь для просмотра всего текста
T_HEADERS = {};
T_HEADERS.TEST = {};

function addpjsipheder(context, exten)
app.Verbose(3, "Add PJSIP headers");
for k,v in pairs(_G.T_HEADERS) do
app.Verbose(3, "Key:" .. tostring(k) .. " value:" .. tostring(v));
end;
-- channel["PJSIP_HEADER"]("add",channel.HDR_K:get()):set(channel.HDR_V:get());
app.Return();
end;

function test_callback(context, exten)
app.Verbose(3, "Context:" .. context .. " exten:" .. exten);
app.Answer();
channel._T_HDR = channel.CHANNEL:get();
app.Verbose(3, "Chan:" .. channel.T_HDR:get());
_G.T_HEADERS[channel.T_HDR:get()] = {
["X-Asterisk-Transcoding"] = "yes",
["User-Agent"] = HOSTNAME};
app.Verbose(3, "Create table:" .. channel.T_HDR:get());
for k, v in pairs(_G.T_HEADERS) do
app.Verbose(3, "Header:" .. tostring(k) .. " value:" .. tostring(v));
end;
app.Dial("PJSIP/" .. exten .. TEST_PROXY .. ',,b(addPJSIPHeader^addPJSIPHeader^1)');
process_dialstatus(channel.DIALSTATUS:get());
app.Hangup();
end;


Проблема в том, что из функции test_callback я вижу в таблице T_HEADERS созданную глобально TEST и добавленную туда таблицу (имя генерируется динамически через channel.T_HDR:get()), а при попадании в addpjsipheder через вызов в app.Dial - ключ b видно только таблицу TEST. При возврате в функцию test_callback мне снова видно созданную таблицу (проверку я уже удалил).
Что я упускаю - чтобы таблица добавлялась в глобальную таблицу и была видно во всем скрипте?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.03.2016, 08:54
Ответы с готовыми решениями:

Программа для Lua
Посоветуйте пожалуйста программу для написания, просмотра и отладки lua...

Средства компиляции для Lua
В последние время я заметил, что активно стал использоваться язык Lua, в...

LUA и прекрасный враппер для Билдера
Отака, можешь попробовать tolua++ либу сделать для Билдера? А то тот, враппер,...

Можно ли сделать ОС для компьютера на lua?
Можно ли сделать свою ОС для компьютера на lua. Желательно без использования...

Посоветуйте литературу по Lua и Corona SDK для начинающих
Знаю Delphi, c++, assembler. Последний немного. Посоветуйте с чего начать...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.03.2016, 08:54

Написать switch для lua, немного модифицировав исходники интерпретатора
Привет всем. Уверена, что найдутся люди, которые смогут помочь... Дело в том,...

Обмен данными между функциями - return
Давно матлабом не пользовался, подзабыл.... Есть 2 файла... Файл...

Обмен данными между С++ и С#
Имеются две независимые программы, одна из них написана на С++, другая на С#....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru