file_rwonly.go 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. package keyvalue
  2. import (
  3. "github.com/hack-pad/hackpadfs"
  4. "github.com/hack-pad/hackpadfs/keyvalue/blob"
  5. )
  6. type readOnlyFile struct {
  7. file *file
  8. }
  9. func (r *readOnlyFile) Close() error {
  10. return r.file.Close()
  11. }
  12. func (r *readOnlyFile) Read(p []byte) (n int, err error) {
  13. return r.file.Read(p)
  14. }
  15. func (r *readOnlyFile) ReadBlob(length int) (blob blob.Blob, n int, err error) {
  16. return r.file.ReadBlob(length)
  17. }
  18. func (r *readOnlyFile) ReadAt(p []byte, off int64) (n int, err error) {
  19. return r.file.ReadAt(p, off)
  20. }
  21. func (r *readOnlyFile) ReadBlobAt(length int, off int64) (b blob.Blob, n int, err error) {
  22. return r.file.ReadBlobAt(length, off)
  23. }
  24. func (r *readOnlyFile) Seek(offset int64, whence int) (int64, error) {
  25. return r.file.Seek(offset, whence)
  26. }
  27. func (r *readOnlyFile) Stat() (hackpadfs.FileInfo, error) {
  28. return r.file.Stat()
  29. }
  30. func (r *readOnlyFile) Truncate(size int64) error {
  31. return r.file.Truncate(size)
  32. }
  33. func (r *readOnlyFile) ReadDir(n int) ([]hackpadfs.DirEntry, error) {
  34. return r.file.ReadDir(n)
  35. }
  36. func (r *readOnlyFile) Chmod(mode hackpadfs.FileMode) error {
  37. return r.file.Chmod(mode)
  38. }
  39. type writeOnlyFile struct {
  40. file *file
  41. }
  42. func (w *writeOnlyFile) Read(_ []byte) (n int, err error) {
  43. // Read is required by hackpadfs.File
  44. return 0, &hackpadfs.PathError{Op: "read", Path: w.file.path, Err: hackpadfs.ErrNotImplemented}
  45. }
  46. func (w *writeOnlyFile) Close() error {
  47. return w.file.Close()
  48. }
  49. func (w *writeOnlyFile) Seek(offset int64, whence int) (int64, error) {
  50. return w.file.Seek(offset, whence)
  51. }
  52. func (w *writeOnlyFile) Write(p []byte) (n int, err error) {
  53. return w.file.Write(p)
  54. }
  55. func (w *writeOnlyFile) WriteBlob(p blob.Blob) (n int, err error) {
  56. return w.file.WriteBlob(p)
  57. }
  58. func (w *writeOnlyFile) WriteAt(p []byte, off int64) (n int, err error) {
  59. return w.file.WriteAt(p, off)
  60. }
  61. func (w *writeOnlyFile) WriteBlobAt(p blob.Blob, off int64) (n int, err error) {
  62. return w.file.WriteBlobAt(p, off)
  63. }
  64. func (w *writeOnlyFile) Stat() (hackpadfs.FileInfo, error) {
  65. return w.file.Stat()
  66. }
  67. func (w *writeOnlyFile) Truncate(size int64) error {
  68. return w.file.Truncate(size)
  69. }
  70. func (w *writeOnlyFile) Chmod(mode hackpadfs.FileMode) error {
  71. return w.file.Chmod(mode)
  72. }