MCPcopy Index your code
hub / github.com/google/brotli / decode

Method decode

java/org/brotli/wrapper/dec/Decoder.java:68–114  ·  view source on GitHub ↗

Continue decoding. @return -1 if stream is finished, or number of bytes available in read buffer (> 0)

()

Source from the content-addressed store, hash-verified

66 * @return -1 if stream is finished, or number of bytes available in read buffer (> 0)
67 */
68 int decode() throws IOException {
69 while (true) {
70 if (buffer != null) {
71 if (!buffer.hasRemaining()) {
72 buffer = null;
73 } else {
74 return buffer.remaining();
75 }
76 }
77
78 switch (decoder.getStatus()) {
79 case DONE:
80 return -1;
81
82 case OK:
83 decoder.push(0);
84 break;
85
86 case NEEDS_MORE_INPUT:
87 // In "eager" more pulling preempts pushing.
88 if (eager && decoder.hasOutput()) {
89 buffer = decoder.pull();
90 break;
91 }
92 ByteBuffer inputBuffer = decoder.getInputBuffer();
93 ((Buffer) inputBuffer).clear();
94 int bytesRead = source.read(inputBuffer);
95 if (bytesRead == -1) {
96 fail("unexpected end of input");
97 }
98 if (bytesRead == 0) {
99 // No input data is currently available.
100 buffer = EMPTY_BUFFER;
101 return 0;
102 }
103 decoder.push(bytesRead);
104 break;
105
106 case NEEDS_MORE_OUTPUT:
107 buffer = decoder.pull();
108 break;
109
110 default:
111 fail("corrupted input");
112 }
113 }
114 }
115
116 void discard(int length) {
117 ((Buffer) buffer).position(buffer.position() + length);

Callers 4

upperCase1Method · 0.80
readMethod · 0.80
skipMethod · 0.80
readMethod · 0.80

Calls 7

failMethod · 0.95
getStatusMethod · 0.80
hasOutputMethod · 0.80
pushMethod · 0.45
pullMethod · 0.45
getInputBufferMethod · 0.45
readMethod · 0.45

Tested by

no test coverage detected