godai-kaihatsu / gondwana

https://gondwana.godai.co.jp/
2 stars 0 forks source link

HTTP API Filesystem を実装、提供したい #35

Closed usagi closed 6 years ago

usagi commented 6 years ago

HTTP API / JSON-RPC-2.0 の実装により扱いやすく開発効率の良好なテキストベースのインターフェースは整備できたが、テキストのRPCベースでの連携においてもバイナリーの送受信を行うための仕組みを並行して扱えると便利の善い事もある。

そこで G4 では /api/json-rpc-2.0/ の設計時に、併せて /filesystem/tmp/ の試験提供を計画していた。この設計は HTTP サブシステムの実装にあたり採用したミドルウェアの実装に若干機能不足があったため、開発元に相談し機能追加を行って貰っていた。先日この機能追加が完了したので、 G4 の HTTP ファイルシステム API を実装、提供したい。

さしあたり、本チケットでは /filesystem/tmp/ に対して、次の2点の試験実装を行う。

  1. REST API による GET, PUT, DELETE によるファイル操作を提供
  2. GeoObject API でテクスチャーを G4 HTTP Filesystem にアップロードされたファイルから読み出す拡張
  3. ( optional ) 対応可能なリソースがあれば .X, .ply あるいは .obj からの GeoObject ロードにも対応する。

本チケットの段階ではディレクトリーの作成には対応しない。

実装時の注意点: API で提供するファイルシステムから実在のファイルシステムへアクセスできるような欠陥を伴わず実装すること。

usagi commented 6 years ago

4.0.0.14 へ取り込むため対応を開始する。

usagi commented 6 years ago

今日の実装進捗状況:

残タスク:

usagi commented 6 years ago

進捗:

C++17 を正式に使えれば filesystem も std を使って簡単かつ安全かつ UE4 よりは信頼性の高い実装を使用できるのだが UE-4.19 でも C++17 対応が公式版には入らない様子が見える。

仕方ないので boost_filesystem をリンクするか検討しようと思うが、先に UE4 の IPlatformFile の内部実装を確認してみるつもりだ。

残タスク:

usagi commented 6 years ago

FILESYSTEM API の実装は完了した。

残タスク:

usagi commented 6 years ago
usagi commented 6 years ago
  1. GeoObject.SetTextureSource<object:texturesource> に JSON で直接データを転送する data キー系の既存実装に加えて G4FS と HTTP に対応した url キー系の実装を追加
  2. UWS Connection::GetDataBlob の追加パッチを isara tech へ提案

残タスク:

2018-01-23 には残タスクを終え、 4.0.0.14 ( preview-5 ) をリリースできるだろう。

usagi commented 6 years ago

進捗

image

他にも g4fs URL 形式と Filesystem APIs に対応した機能追加をしばらく行うが、それらはリビジョンアップで逐次提供する事として、 4.0.0.14 ( prview-5 ) をリリースする事にする。