(stream, state, chunk, encoding, addToFront)
| 2939 | }; |
| 2940 | |
| 2941 | function readableAddChunk(stream, state, chunk, encoding, addToFront) { |
| 2942 | var er = chunkInvalid(state, chunk); |
| 2943 | if (er) { |
| 2944 | stream.emit('error', er); |
| 2945 | } else if (chunk === null || chunk === undefined) { |
| 2946 | state.reading = false; |
| 2947 | if (!state.ended) |
| 2948 | onEofChunk(stream, state); |
| 2949 | } else if (state.objectMode || chunk && chunk.length > 0) { |
| 2950 | if (state.ended && !addToFront) { |
| 2951 | var e = new Error('stream.push() after EOF'); |
| 2952 | stream.emit('error', e); |
| 2953 | } else if (state.endEmitted && addToFront) { |
| 2954 | var e = new Error('stream.unshift() after end event'); |
| 2955 | stream.emit('error', e); |
| 2956 | } else { |
| 2957 | if (state.decoder && !addToFront && !encoding) |
| 2958 | chunk = state.decoder.write(chunk); |
| 2959 | |
| 2960 | // update the buffer info. |
| 2961 | state.length += state.objectMode ? 1 : chunk.length; |
| 2962 | if (addToFront) { |
| 2963 | state.buffer.unshift(chunk); |
| 2964 | } else { |
| 2965 | state.reading = false; |
| 2966 | state.buffer.push(chunk); |
| 2967 | } |
| 2968 | |
| 2969 | if (state.needReadable) |
| 2970 | emitReadable(stream); |
| 2971 | |
| 2972 | maybeReadMore(stream, state); |
| 2973 | } |
| 2974 | } else if (!addToFront) { |
| 2975 | state.reading = false; |
| 2976 | } |
| 2977 | |
| 2978 | return needMoreData(state); |
| 2979 | } |
| 2980 | |
| 2981 | |
| 2982 |
no test coverage detected