aboutsummaryrefslogtreecommitdiff
path: root/src/cljs/gnunet_web/transport.cljs
diff options
context:
space:
mode:
authorDavid Barksdale <amatus@amatus.name>2014-12-02 19:20:23 -0600
committerDavid Barksdale <amatus@amatus.name>2014-12-02 19:20:23 -0600
commit7cf452bc0005fe5a2655ee9b71831a3052fbcdf8 (patch)
treedf1fadf06993c04943608d41665901574a2d4c89 /src/cljs/gnunet_web/transport.cljs
parent9742344c663181e52701dde04ef8f4609354624f (diff)
Use GNUNET_TRANSPORT_get_hello
Diffstat (limited to 'src/cljs/gnunet_web/transport.cljs')
-rw-r--r--src/cljs/gnunet_web/transport.cljs39
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)]