MCPcopy Create free account
hub / github.com/FirebirdSQL/firebird / BufferedStreamWindow

Class BufferedStreamWindow

src/jrd/recsrc/WindowedStream.cpp:45–93  ·  view source on GitHub ↗

This stream makes possible to reuse a BufferedStream, so each usage maintains a different cursor position.

Source from the content-addressed store, hash-verified

43 // This stream makes possible to reuse a BufferedStream, so each usage maintains a different
44 // cursor position.
45 class BufferedStreamWindow : public BaseBufferedStream
46 {
47 struct Impure : public RecordSource::Impure
48 {
49 FB_UINT64 irsb_position;
50 };
51
52 public:
53 BufferedStreamWindow(CompilerScratch* csb, BufferedStream* next);
54
55 void internalOpen(thread_db* tdbb) const override;
56 void close(thread_db* tdbb) const override;
57
58 bool internalGetRecord(thread_db* tdbb) const override;
59 bool refetchRecord(thread_db* tdbb) const override;
60 WriteLockResult lockRecord(thread_db* tdbb) const override;
61
62 void getChildren(Firebird::Array<const RecordSource*>& children) const override;
63
64 void print(thread_db* tdbb, Firebird::string& plan, bool detailed, unsigned level, bool recurse) const override;
65
66 void markRecursive() override;
67 void invalidateRecords(Request* request) const override;
68
69 void findUsedStreams(StreamList& streams, bool expandAll) const override;
70 bool isDependent(const StreamList& streams) const override;
71 void nullRecords(thread_db* tdbb) const override;
72
73 void locate(thread_db* tdbb, FB_UINT64 position) const override
74 {
75 Request* const request = tdbb->getRequest();
76 Impure* const impure = request->getImpure<Impure>(m_impure);
77 impure->irsb_position = position;
78 }
79
80 FB_UINT64 getCount(thread_db* tdbb) const override
81 {
82 return m_next->getCount(tdbb);
83 }
84
85 FB_UINT64 getPosition(Request* request) const override
86 {
87 Impure* const impure = request->getImpure<Impure>(m_impure);
88 return impure->irsb_position;
89 }
90
91 public:
92 NestConst<BufferedStream> m_next;
93 };
94
95 // BufferedStreamWindow implementation
96

Callers 1

WindowedStreamMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected