[jvm] Интеграция FILE* с Java-потоками

Maxim Karpov me at makkarpov.ru
Wed Mar 21 21:31:35 MSK 2018


В целом код хороший, хотя и с небольшими замечаниями.

1. (и основное) Если fopencookie() по каким-то неведомым причинам таки 
не сможет создать поток, то вызывающий код обрушит через exit() всю JVM. 
Хотелось бы видеть создание и выкидывание исключения, причем внутри 
самой функции открытия потока.

2. Тестовый код лучше не смешивать с основным и вынести как в отдельный 
.cpp-файл, так и в отдельный класс. Можно добавить еще тесты на fscanf и 
ungetc, хотя, наверное, и не обязательно, ведь если поток работает, а 
scanf - нет, то это уже проблемы libc.

3. В тестовом коде можно использовать NewStringUTF, пляски с буферами 
будет меньше.

21.03.2018 20:47, Михаил Мутафян пишет:
> Запушил свою реализацию чтения из InputStream (через fopencookie) в 
> отдельную ветку. Также добавил несколько простых тестов.
> Было бы здорово, если бы кто-нибудь ещё посмотрел и оставил свои 
> замечания по коду.
>
>     20.03.2018, 22:23, Maxim Karpov <me at makkarpov.ru
>     <mailto:me at makkarpov.ru>>
>     Вроде бы доделал билд-систему, сейчас она проверяет наличие
>     fopencookie() в системе и в зависимости от результата включает или
>     выключает использование кода, связанного с ней. Технически -- при
>     положительном результате устанавливается дефайн `HAVE_FOPENCOOKIE`
>     и в
>     компиляции начинают участвовать файлы cookie_stream_io.{cpp,h}.
>     Переключение реализаций было решено сделать при помощи классов и
>     виртуальных методов, чтобы, как минимум, можно было программно
>     "откатиться" до реализации на пайпах, если, например, захочется её
>     протестировать в системе, где fopencookie() присутствует.
>     В соответствии с планом распределение задач следующее:
>     * Миша -- реализация чтения из java.io
>     <http://java.io>.InputStream при помощи fopencookie()
>     * Ваня -- реализация записи в java.io
>     <http://java.io>.OutputStream при помощи fopencookie()
>     * Слава -- реализация пайпов и чтения/записи при помощи второго
>     потока.
>     _______________________________________________
>     jvm mailing list
>     jvm at compilers.ispras.ru
>     https://compilers.ispras.ru/cgi-bin/mailman/listinfo/jvm
>



More information about the jvm mailing list