Kuwataさんのブログreturn0はお料理ブログになったので、Kuwataさんのプログラミングの予定を、僕が書きます。
最小抽象ファイルシステム(mafs)を、通常ファイルシステムとGoogle Datastoreをベースに実装する予定。実装に先立って、仕様をさらに単純化しました。
メタデータ
メタデータは次のとおり。
名前 | 値のデータ型 | 必須か | デフォルト値 | 説明 |
---|---|---|---|---|
contentLength | ゼロ以上の整数 | YES | - | 内容のバイトサイズ |
contentType | 文字列 | NO | application/octet-stream | 内容のメディアタイプ |
created | タイムスタンプ | NO | 不明な時刻 | ファイルが作られた時 |
lastModified | タイムスタンプ | YES | - | ファイルが最後に変更された時 |
isText | 真偽値 | NO | false | 内容がテキストデータかどうか |
textEncoding | 文字列 | NO | utf-8 | 内容がテキストのとき、その文字エンコーディングスキーム |
executable | 真偽値 | NO | false | 実行可能ファイルかどうか |
メタデータの設定と管理はファイルシステム実装に任せることにしました。それに伴い、API関数の引数にメタデータの指定はなくなります。また、メタデータを変更するAPI(setMetadata, updateMetadata)も削除されます。
API関数
問い合わせ/読み込み(略号R)をする関数。
番号 | 関数呼び出し形式 | 戻り値 |
---|---|---|
R1 | readFile(AuthoriToken, Path) | Binary |
R2 | readDirectory(AuthoriToken, Path) | DirectoryEntryList |
R3 | getMetadata(AuthoriToken, Path) | Metadata |
変更や書き込み(略号W)をする関数。
番号 | 関数呼び出し形式 | 戻り値 |
---|---|---|
W1 | createFile(AuthoriToken, Path) | Void |
W2 | createDirectory(AuthoriToken, Path) | Void |
W3 | deleteFile(AuthoriToken, Path) | Void |
W4 | deleteDirectory(AuthoriToken, Path) | Void |
W5 | delete(AuthoriToken, Path) | Void |
W6 | writeFile(AuthoriToken, Path, Binary) | Void |
エラーの取り扱い
処理が失敗したときのエラー番号や例外情報の形式はまだ完全には決まってません。POSIX番号では多すぎ、HTTPステータスコードでは少なすぎる感じです。
拡張の予定
シンボリックリンクはそのうち入れる予定です。まずは、アプリケーション側ライブラリとしてシンボリックリンク機能を作ってみて、様子を見てファイルシステム側に移そうかと。