You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

DemuxInputStream.java 2.2 kB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. /*
  2. * Licensed to the Apache Software Foundation (ASF) under one or more
  3. * contributor license agreements. See the NOTICE file distributed with
  4. * this work for additional information regarding copyright ownership.
  5. * The ASF licenses this file to You under the Apache License, Version 2.0
  6. * (the "License"); you may not use this file except in compliance with
  7. * the License. You may obtain a copy of the License at
  8. *
  9. * http://www.apache.org/licenses/LICENSE-2.0
  10. *
  11. * Unless required by applicable law or agreed to in writing, software
  12. * distributed under the License is distributed on an "AS IS" BASIS,
  13. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. * See the License for the specific language governing permissions and
  15. * limitations under the License.
  16. *
  17. */
  18. package org.apache.tools.ant;
  19. import java.io.IOException;
  20. import java.io.InputStream;
  21. /**
  22. *
  23. * Passes input requests to the project object for demuxing into
  24. * individual tasks and threads.
  25. *
  26. * @since Ant 1.6
  27. */
  28. public class DemuxInputStream extends InputStream {
  29. /**
  30. * The project to from which to get input.
  31. */
  32. private Project project;
  33. /**
  34. * Create a DemuxInputStream for the given project
  35. *
  36. * @param project the project instance
  37. */
  38. public DemuxInputStream(Project project) {
  39. this.project = project;
  40. }
  41. /**
  42. * Read a byte from the project's demuxed input.
  43. * @return the next byte
  44. * @throws IOException on error
  45. */
  46. public int read() throws IOException {
  47. byte[] buffer = new byte[1];
  48. if (project.demuxInput(buffer, 0, 1) == -1) {
  49. return -1;
  50. }
  51. return buffer[0];
  52. }
  53. /**
  54. * Read bytes from the project's demuxed input.
  55. * @param buffer an array of bytes to read into
  56. * @param offset the offset in the array of bytes
  57. * @param length the number of bytes in the array
  58. * @return the number of bytes read
  59. * @throws IOException on error
  60. */
  61. public int read(byte[] buffer, int offset, int length) throws IOException {
  62. return project.demuxInput(buffer, offset, length);
  63. }
  64. }