TPI: File System , duda con la actualización del Buffer #262
-
Buenas, estuve intentando resolver el tpi y me estoy trabando bastante en el tema de como actualizar el inicio y el final de un buffer, vi la "resolución" para guiarme, pero no entiendo por ejemplo la función "limits":
Se supone que esta función actualiza el bufferEnd, pero en sí conceptualmente que es el bufferEnd? el tamanio del buffer? porque el bufferStart esta siempre inicializado en 0. (en la resolción ) tampoco me queda claro, cuando yo leo y escribo con un buffer, no debería indicar la cantidad a leer o a escribir en bytes y usar eso para actualizar mi final de buffer? bufferStart actua como un "puntero a una direccion de memoria inicio" y bufferEnd "puntero a direccion final"? offtopic : No se si esta consulta cae en categoria de consulta objetos o en general por no estar en ninguna otra. |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 1 reply
-
Hola! El bufferEnd es el límite hasta donde metiste datos en tu array de bytes. Es decir, tenes un byte[] de tamaño 100 pero tal vez ese array tiene otras cosas y los datos de este archivo los querés entre las posiciones 12 (start) y 22 (end). Eso es lo que asume la API de bajo nivel. En la resolución, si bien se agrega la abstracción Esto no quiere decir que la API de alto nivel no se pueda mejorar aún más. Sería interesante pensar que tal vez estamos en un mundo con abstracciones lo suficientemente altas como para no querer preocuparnos por índices y armar al buffer como un objeto de tamaño inmutable que siempre lee en su totalidad, sin manejar ni mutar índices, solo indicando cuánto queremos leer de un determinado archivo. O pensar que, dado un buffer, la memoria se aloca dinámicamente de acuerdo a la cantidad de bytes que se quieren leer dentro de él. |
Beta Was this translation helpful? Give feedback.
Hola!
El bufferEnd es el límite hasta donde metiste datos en tu array de bytes. Es decir, tenes un byte[] de tamaño 100 pero tal vez ese array tiene otras cosas y los datos de este archivo los querés entre las posiciones 12 (start) y 22 (end). Eso es lo que asume la API de bajo nivel.
En la resolución, si bien se agrega la abstracción
Buffer
se decide no asumir demasiado más y se dejan estos parámetros abiertos. El método 'limit' te permitiría decir "Hice un buffer de 100, pero solo le quiero escribir hasta el 20".Esto no quiere decir que la API de alto nivel no se pueda mejorar aún más. Sería interesante pensar que tal vez estamos en un mundo con abstracciones lo suficientemente altas c…