diff options
author | David Barksdale <amatus@amatus.name> | 2014-12-02 19:20:23 -0600 |
---|---|---|
committer | David Barksdale <amatus@amatus.name> | 2014-12-02 19:20:23 -0600 |
commit | 7cf452bc0005fe5a2655ee9b71831a3052fbcdf8 (patch) | |
tree | df1fadf06993c04943608d41665901574a2d4c89 /src/cljs/gnunet_web/transport.cljs | |
parent | 9742344c663181e52701dde04ef8f4609354624f (diff) |
Use GNUNET_TRANSPORT_get_hello
Diffstat (limited to 'src/cljs/gnunet_web/transport.cljs')
-rw-r--r-- | src/cljs/gnunet_web/transport.cljs | 39 |
1 files changed, 24 insertions, 15 deletions
diff --git a/src/cljs/gnunet_web/transport.cljs b/src/cljs/gnunet_web/transport.cljs index bcf9037..eb0afbf 100644 --- a/src/cljs/gnunet_web/transport.cljs +++ b/src/cljs/gnunet_web/transport.cljs @@ -17,7 +17,7 @@ (ns gnunet-web.transport (:require [cljs.core.async :refer [chan close!]] [gnunet-web.encoder :refer [encode-uint32]] - [gnunet-web.hello :refer [encode-hello parse-hello]] + [gnunet-web.hello :refer [encode-hello]] [gnunet-web.message :refer [encode-message parse-message-types]] [gnunet-web.service :refer [client-connect]] [gnunet-web.util :refer [get-object read-memory register-object @@ -35,20 +35,6 @@ (encode-uint32 options) peer)})) -(defn monitor - [callback] - (let [message-channel (js/MessageChannel.)] - (set! (.-onmessage (.-port1 message-channel)) - (fn [event] - (let [message @((parse-message-types #{parse-hello}) - (.-data event))] - (if (coll? message) - (callback (:message (first message))))))) - (client-connect "transport" "web app (monitor)" - (.-port2 message-channel)) - (.postMessage (.-port1 message-channel) - (into-array (encode-start-message {}))))) - (def state-strings {0 "Not connected" 1 "Waiting for ATS" @@ -85,6 +71,29 @@ 0 0))) +(defn get-hello-callback + [cls hello-pointer] + (let [closure (get-object cls) + peer-id-pointer (js/_malloc 32)] + (js/_GNUNET_HELLO_get_id hello-pointer peer-id-pointer) + ((:callback closure) (vec (read-memory peer-id-pointer 32))) + (js/_free peer-id-pointer) + (js/_GNUNET_TRANSPORT_get_hello_cancel @(:handle closure)) + (unregister-object cls))) + +(def get-hello-callback-pointer (js/Runtime.addFunction get-hello-callback)) + +(defn get-my-peer-id + [callback] + (let [closure {:callback callback + :handle (atom nil)} + closure-key (register-object closure)] + (reset! (:handle closure) + (js/_GNUNET_TRANSPORT_get_hello + transport-handle + get-hello-callback-pointer + closure-key)))) + (defn address->string-callback [cls string-pointer res] (let [ch (get-object cls)] |