<div class="gmail_extra"><br><div class="gmail_quote">2012/11/26 Ruslan Zakirov <span dir="ltr"><<a href="mailto:ruz@bestpractical.com" target="_blank">ruz@bestpractical.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
2012/11/26 Mons Anderson <<a href="mailto:mons@cpan.org">mons@cpan.org</a>>:<br>
<div><div class="h5"><br>
</div></div>Я не удивлен, что что-то падает. Прикрепить padlist к XS sub'е - это<br>
умно, но скорее всего не жизнеспособно. Просто потому что perl сам<br>
этого не делает. Может и заработает, если долго курить сорцы.<br></blockquote><div> </div><div>Ну начнем с того, что прикрепил я весьма криво. </div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<br>
При определенных условиях можно сделать как в [1]. Смотри<br>
xs_make_accessor и соответственно xs_accessor. Там генерируется<br>
именованый альяс к XS функции и на этот альяс можно повесить i32<br>
значение. Вот только отследить удаление функции не получится. Придется<br>
делать пул по значению, если этого достаточно для задачи.<br>
<br>
[1] <a href="http://cpansearch.perl.org/src/RUZ/Class-Accessor-Fast-XS-0.04/XS.xs" target="_blank">http://cpansearch.perl.org/src/RUZ/Class-Accessor-Fast-XS-0.04/XS.xs</a><br>
<br>
Ты чего оптимизируешь? Может можно по другому?<br></blockquote><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br></blockquote></div><div class="gmail_extra"><br></div>
Да не то, чтобы оптимизирую. Хочу написать AnyEvent::***::XS</div><div class="gmail_extra">Т.е. XS'ную реализацию чего-нибудь с использованием AnyEvent.</div><div class="gmail_extra">А там нужно передавать коллбэки с замыканиями.</div>
<div class="gmail_extra"><br></div><div class="gmail_extra">Вообще мне, по большому счету, нужно, например следующее:</div><div class="gmail_extra">1. есть сишная функция on_event(...)</div><div class="gmail_extra">2. Вызвать AE::io( fileno, flag, newXSub(... on_event ...) )</div>
<div class="gmail_extra">3. связать с вызовом on_event какую-либо структуру/SV'шку, чтобы было понятно, что за коллбэк был вызван.</div><div class="gmail_extra"><br></div><div class="gmail_extra">т.е., грубо говоря, я хочу получить API, аналогичное EVAPI, только реализованое через AnyEvent.</div>
<div class="gmail_extra"><br></div><div class="gmail_extra">Я предполагал создать PADLIST, запихнуть туда SV'шку, которая будет классическим указателем на структуру.</div><div class="gmail_extra">потом при вызове сабы считать из падлиста SV'шку и получить указатель на структуру.</div>
<div class="gmail_extra"><br></div><div class="gmail_extra">И в общем это работает, но если вызывается в режиме DB, то там как-то съезжают PADLIST'ы и мой хардкод крешится.</div><div class="gmail_extra">Я в общем думаю пока копать на этот предмет разные модули (коих весьма немного, к сожалению)</div>
<div class="gmail_extra"><br></div><div class="gmail_extra">Спасибо за наводку на CAF-XS, там действительно интересная техника.</div><div class="gmail_extra"><br clear="all"><div><br></div>-- <br>Best wishes,<br>Vladimir V. Perepelitsa aka Mons Anderson<br>
<<a href="mailto:inthrax@gmail.com">inthrax@gmail.com</a>>, <<a href="mailto:mons@cpan.org">mons@cpan.org</a>><br><a href="http://github.com/Mons">http://github.com/Mons</a><br>
</div>