stream_raw_reader.cpp 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #include "stream_table_reader.h"
  2. #include "node_table_reader.h"
  3. #include "proto_table_reader.h"
  4. #include "skiff_table_reader.h"
  5. #include "yamr_table_reader.h"
  6. #include <util/system/env.h>
  7. #include <util/string/type.h>
  8. namespace NYT {
  9. template <>
  10. TTableReaderPtr<TNode> CreateTableReader<TNode>(
  11. IInputStream* stream, const TTableReaderOptions& /*options*/)
  12. {
  13. auto impl = ::MakeIntrusive<TNodeTableReader>(
  14. ::MakeIntrusive<NDetail::TInputStreamProxy>(stream));
  15. return new TTableReader<TNode>(impl);
  16. }
  17. template <>
  18. TTableReaderPtr<TYaMRRow> CreateTableReader<TYaMRRow>(
  19. IInputStream* stream, const TTableReaderOptions& /*options*/)
  20. {
  21. auto impl = ::MakeIntrusive<TYaMRTableReader>(
  22. ::MakeIntrusive<NDetail::TInputStreamProxy>(stream));
  23. return new TTableReader<TYaMRRow>(impl);
  24. }
  25. namespace NDetail {
  26. ////////////////////////////////////////////////////////////////////////////////
  27. ::TIntrusivePtr<IProtoReaderImpl> CreateProtoReader(
  28. IInputStream* stream,
  29. const TTableReaderOptions& /* options */,
  30. const ::google::protobuf::Descriptor* descriptor)
  31. {
  32. return new TLenvalProtoTableReader(
  33. ::MakeIntrusive<TInputStreamProxy>(stream),
  34. {descriptor});
  35. }
  36. ::TIntrusivePtr<IProtoReaderImpl> CreateProtoReader(
  37. IInputStream* stream,
  38. const TTableReaderOptions& /* options */,
  39. TVector<const ::google::protobuf::Descriptor*> descriptors)
  40. {
  41. return new TLenvalProtoTableReader(
  42. ::MakeIntrusive<TInputStreamProxy>(stream),
  43. std::move(descriptors));
  44. }
  45. ////////////////////////////////////////////////////////////////////////////////
  46. } // namespace NDetail
  47. } // namespace NYT