image.png

    1. /*
    2. * Licensed to the Apache Software Foundation (ASF) under one
    3. * or more contributor license agreements. See the NOTICE file
    4. * distributed with this work for additional information
    5. * regarding copyright ownership. The ASF licenses this file
    6. * to you under the Apache License, Version 2.0 (the
    7. * "License"); you may not use this file except in compliance
    8. * with the License. You may obtain a copy of the License at
    9. *
    10. * http://www.apache.org/licenses/LICENSE-2.0
    11. *
    12. * Unless required by applicable law or agreed to in writing, software
    13. * distributed under the License is distributed on an "AS IS" BASIS,
    14. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    15. * See the License for the specific language governing permissions and
    16. * limitations under the License.
    17. */
    18. package org.apache.flink.core.memory;
    19. import org.apache.flink.annotation.Public;
    20. import java.io.DataOutput;
    21. import java.io.IOException;
    22. /**
    23. * This interface defines a view over some memory that can be used to sequentially write contents to the memory.
    24. * The view is typically backed by one or more {@link org.apache.flink.core.memory.MemorySegment}.
    25. */
    26. @Public
    27. public interface DataOutputView extends DataOutput {
    28. /**
    29. * Skips {@code numBytes} bytes memory. If some program reads the memory that was skipped over, the
    30. * results are undefined.
    31. *
    32. * @param numBytes The number of bytes to skip.
    33. *
    34. * @throws IOException Thrown, if any I/O related problem occurred such that the view could not
    35. * be advanced to the desired position.
    36. */
    37. void skipBytesToWrite(int numBytes) throws IOException;
    38. /**
    39. * Copies {@code numBytes} bytes from the source to this view.
    40. *
    41. * @param source The source to copy the bytes from.
    42. * @param numBytes The number of bytes to copy.
    43. *
    44. * @throws IOException Thrown, if any I/O related problem occurred, such that either the input view
    45. * could not be read, or the output could not be written.
    46. */
    47. void write(DataInputView source, int numBytes) throws IOException;
    48. }