MCPcopy Index your code
hub / github.com/koding/kite / RegisterHTTP

Method RegisterHTTP

heartbeat.go:130–181  ·  view source on GitHub ↗

RegisterHTTP registers current Kite to Kontrol. After registration other Kites can find it via GetKites() or WatchKites() method. It registers again if connection to kontrol is lost.

(kiteURL *url.URL)

Source from the content-addressed store, hash-verified

128// can find it via GetKites() or WatchKites() method. It registers again if
129// connection to kontrol is lost.
130func (k *Kite) RegisterHTTP(kiteURL *url.URL) (*registerResult, error) {
131 registerURL := k.getKontrolPath("register")
132
133 args := protocol.RegisterArgs{
134 URL: kiteURL.String(),
135 Kite: k.Kite(),
136 Auth: &protocol.Auth{
137 Type: "kiteKey",
138 Key: k.KiteKey(),
139 },
140 }
141
142 data, err := json.Marshal(&args)
143 if err != nil {
144 return nil, err
145 }
146
147 resp, err := k.Config.Client.Post(registerURL, "application/json", bytes.NewReader(data))
148 if err != nil {
149 return nil, err
150 }
151 defer resp.Body.Close()
152
153 var rr protocol.RegisterResult
154 if err := json.NewDecoder(resp.Body).Decode(&rr); err != nil {
155 return nil, err
156 }
157
158 if rr.Error != "" {
159 return nil, errors.New(rr.Error)
160 }
161
162 if rr.HeartbeatInterval == 0 {
163 return nil, errors.New("heartbeat interval cannot be zero")
164 }
165
166 parsed, err := url.Parse(rr.URL)
167 if err != nil {
168 k.Log.Error("Cannot parse registered URL: %s", err.Error())
169 }
170
171 heartbeat := time.Duration(rr.HeartbeatInterval) * time.Second
172
173 k.Log.Info("Registered (via HTTP) with URL: '%s' and HeartBeat interval: '%s'",
174 rr.URL, heartbeat)
175
176 go k.sendHeartbeats(heartbeat, kiteURL)
177
178 k.callOnRegisterHandlers(&rr)
179
180 return &registerResult{parsed}, nil
181}
182
183var errRegisterAgain = errors.New("register again")
184

Callers 2

RegisterHTTPForeverMethod · 0.95
TestMultipleRegisterFunction · 0.80

Calls 9

getKontrolPathMethod · 0.95
KiteMethod · 0.95
KiteKeyMethod · 0.95
sendHeartbeatsMethod · 0.95
InfoMethod · 0.80
ErrorMethod · 0.65
StringMethod · 0.45
CloseMethod · 0.45

Tested by 1

TestMultipleRegisterFunction · 0.64