[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