Closed usagi closed 6 years ago
4.0.0.14 へ取り込むため対応を開始する。
今日の実装進捗状況:
curl -Ss -i http://127.0.0.1:50080/api/FILESYSTEM/tmp/a.txt -X GET
のように GET メソッドアクセスすると以下の動作を行う:
\
文字が含まれる場合は /
に正規化される。../
文字列が含まれる場合は除去される。残タスク:
ls
的な text/html コンテントを生成)進捗:
IPlatformFile
関連の挙動がどうも妙で期待動作しない部分がある。
DeleteFile
は成功しない。WriteOpen
するとファイルシステム上にファイルは作成され IFileHandle
は取得できるが Write
は成功しない。DeleteDirectoryRecursively
直後に CreateDirectoryTree
を実行しても成功しない。
Connection
へ GetDataBlob
の実装を追加C++17 を正式に使えれば filesystem も std を使って簡単かつ安全かつ UE4 よりは信頼性の高い実装を使用できるのだが UE-4.19 でも C++17 対応が公式版には入らない様子が見える。
仕方ないので boost_filesystem をリンクするか検討しようと思うが、先に UE4 の IPlatformFile
の内部実装を確認してみるつもりだ。
残タスク:
IPlatformFile
関連の期待動作しない問題の解消Connection::GetDataBlob
の追加パッチを isara tech へ提案FILESYSTEM API の実装は完了した。
残タスク:
Connection::GetDataBlob
の追加パッチを isara tech へ提案GeoObject.SetTextureSource
の <object:texturesource>
に JSON で直接データを転送する data
キー系の既存実装に加えて G4FS と HTTP に対応した url
キー系の実装を追加
Connection::GetDataBlob
の追加パッチを isara tech へ提案残タスク:
2018-01-23 には残タスクを終え、 4.0.0.14 ( preview-5 ) をリリースできるだろう。
進捗
g4fs://var/a.jpg
のように URL 形式でファイル単位の画像から意図した表示動作をしている。(下図参考)他にも g4fs URL 形式と Filesystem APIs に対応した機能追加をしばらく行うが、それらはリビジョンアップで逐次提供する事として、 4.0.0.14 ( prview-5 ) をリリースする事にする。
HTTP API / JSON-RPC-2.0 の実装により扱いやすく開発効率の良好なテキストベースのインターフェースは整備できたが、テキストのRPCベースでの連携においてもバイナリーの送受信を行うための仕組みを並行して扱えると便利の善い事もある。
そこで G4 では
/api/json-rpc-2.0/
の設計時に、併せて/filesystem/tmp/
の試験提供を計画していた。この設計は HTTP サブシステムの実装にあたり採用したミドルウェアの実装に若干機能不足があったため、開発元に相談し機能追加を行って貰っていた。先日この機能追加が完了したので、 G4 の HTTP ファイルシステム API を実装、提供したい。さしあたり、本チケットでは
/filesystem/tmp/
に対して、次の2点の試験実装を行う。本チケットの段階ではディレクトリーの作成には対応しない。
実装時の注意点: API で提供するファイルシステムから実在のファイルシステムへアクセスできるような欠陥を伴わず実装すること。