-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Elixirの言語バインディング対応する #57
Comments
# Erlangのライブラリとリンク
target_link_libraries(
hako_asset_nif
ei
shakoc
) エラーログ:何をリンクすれば良いかわからない。。こまった。
|
出来なくはなくて, 下記を参考にすると良いです. |
|
もしソースコード読んでみてもわからなかったら,随時 Zoom ミーティング応じますよ! |
ありがとうございます!リンク通りました! |
ありがとうございます。なるほど、これってプロセス間通信するような気がしました。 箱庭のシミュレーション時間単位でのコールバックになるので、ちょっとオーバーヘッド高そうっすね。。 |
ありがとうございます! まずは基本的なアセットAPIをElixir化していきます! |
残りのAPI実装完了! |
厳密にはメッセージ・パッシングに基づく軽量プロセス間通信です.MMUをいじったりするわけではありません.
軽量プロセスなので,コールバックそのもののオーバーヘッドは高くありません. ポインタによる共有メモリ参照をしたい場合は,私はまだ使ったことがないのですが, https://www.erlang.org/doc/apps/erts/erl_nif.html#functionality の Resource objects の項目にある関数群を用いることで,出来ます. |
おー、そうなんですね。 |
enif_sendでコールバック関数呼び出し実装してビルドは通りましたー。 |
ビルド通って、動くようになりましたが、コールバック関数が呼び出されない。。 |
ChatGPTに書かせたので、ちゃんと意味を理解しようっと。 |
サンプルコードを追加: |
うーん、enif_sendはデータ送信して即復帰するだけなのかな? |
色々やってみましたが、どうもダメですね。。 ポーリングベースに戻します。 |
そうです.非同期通信なので,メッセージを送ったら送りっぱなしです. 同期的なプログラミングにするには,Promiseで行うような仕掛けを組むことが必要です. |
箱庭アセットAPI以外はほぼ出来上がりました。
|
現時点の状況(9/3)
|
コード
ElixirはCからElixir関数をコールバックできないので、プリミティブな箱庭アセットAPIでバインディングすることにした。参考URL。
https://github.com/toppers/hakoniwa-core-cpp-client/blob/main/bindings/elixir/hako_asset_elixir_nif.c
これができたら、Elixir言語でコールバックする機構を作る必要がある。先は長い。
cmake
まずは、Macでビルドできるよう試行中。
https://github.com/toppers/hakoniwa-core-cpp-client/blob/main/bindings/elixir/CMakeLists.txt
これを試すには、以下を有効化することでビルドが走る。
hakoniwa-core-cpp-client/bindings/CMakeLists.txt
Line 9 in ba4345b
The text was updated successfully, but these errors were encountered: