2016-05-19 4 views
0

Я работаю над проектом, который может использовать либо TcpStream s, либо SslStream s, в зависимости от того, что пользователь настроил. У меня есть несколько простых методов, таких как send_cmd(stream) и recv_msg(stream), который работает с этими потоками.Обработка TcpStream или SslStream idiomatically

Было бы более идиоматично создавать перечисление, которое может быть либо TcpStream, либо SslStream и передать это этим методам? Или было бы лучше сделать что-то с чертами, например, чтобы аргумент потока этим методам реализовывал черты Read и Write?

Моя мысль заключается в том, что решение перечислимого типа было бы лучше, поскольку оно явно говорит о том, какие данные мы планируем обрабатывать, вместо того чтобы разрешать все, что реализует Read или Write, например файлы. Однако, с другой стороны, перед использованием потока для всех этих методов потребуется совпадение. Мысли?

+1

Это похоже на http://stackoverflow.com/q/37223741/5189607. – malbarbo

+0

Какую пользу получает ваш код (или пользователей вашего кода), ограничивая только два конкретных типа? – Shepmaster

+0

@Shepmaster: это реализация API для службы, доступной только через tcp. – vimalloc

ответ