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.3 kB

8 years ago
8 years ago
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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. private static final int MASK_8BIT = 0xFF;
  30. /**
  31. * The project to from which to get input.
  32. */
  33. private Project project;
  34. /**
  35. * Create a DemuxInputStream for the given project
  36. *
  37. * @param project the project instance
  38. */
  39. public DemuxInputStream(Project project) {
  40. this.project = project;
  41. }
  42. /**
  43. * Read a byte from the project's demuxed input.
  44. * @return the next byte
  45. * @throws IOException on error
  46. */
  47. @Override
  48. public int read() throws IOException {
  49. byte[] buffer = new byte[1];
  50. if (project.demuxInput(buffer, 0, 1) == -1) {
  51. return -1;
  52. }
  53. return buffer[0] & MASK_8BIT;
  54. }
  55. /**
  56. * Read bytes from the project's demuxed input.
  57. * @param buffer an array of bytes to read into
  58. * @param offset the offset in the array of bytes
  59. * @param length the number of bytes in the array
  60. * @return the number of bytes read
  61. * @throws IOException on error
  62. */
  63. @Override
  64. public int read(byte[] buffer, int offset, int length) throws IOException {
  65. return project.demuxInput(buffer, offset, length);
  66. }
  67. }