blob: f785b61483ee58ed533f01c206d658d6247fb925 [file] [log] [blame]
Bogdan Capritac87a9142014-07-21 10:38:13 -07001package impl
2
3import (
Jiri Simsa764efb72014-12-25 20:57:03 -08004 "v.io/core/veyron2/context"
5 "v.io/core/veyron2/mgmt"
6 "v.io/core/veyron2/vlog"
Cosmos Nicolaou486d3492014-09-30 22:21:20 -07007
Jiri Simsa764efb72014-12-25 20:57:03 -08008 "v.io/core/veyron/lib/exec"
9 "v.io/core/veyron/services/mgmt/device"
Bogdan Capritac87a9142014-07-21 10:38:13 -070010)
11
Bogdan Caprita2b219362014-12-09 17:03:33 -080012// InvokeCallback provides the parent device manager with the given name (which
13// is expected to be this device manager's object name).
Matt Rosencrantz4f8ac602014-12-29 14:42:48 -080014func InvokeCallback(ctx *context.T, name string) {
Bogdan Capritac87a9142014-07-21 10:38:13 -070015 handle, err := exec.GetChildHandle()
16 switch err {
17 case nil:
Bogdan Caprita2b219362014-12-09 17:03:33 -080018 // Device manager was started by self-update, notify the parent.
Jiri Simsaf57930f2014-11-05 15:19:31 -080019 callbackName, err := handle.Config.Get(mgmt.ParentNameConfigKey)
Bogdan Capritac87a9142014-07-21 10:38:13 -070020 if err != nil {
Bogdan Caprita2b219362014-12-09 17:03:33 -080021 // Device manager was not started by self-update, return silently.
Cosmos Nicolaouad2793f2014-10-27 16:24:15 -070022 return
Bogdan Capritac87a9142014-07-21 10:38:13 -070023 }
Bogdan Caprita9c4aa222014-12-10 14:46:30 -080024 client := device.ConfigClient(callbackName)
Matt Rosencrantz89445a42015-01-05 13:32:37 -080025 ctx, cancel := context.WithTimeout(ctx, ipcContextTimeout)
Matt Rosencrantz137b8d22014-08-18 09:56:15 -070026 defer cancel()
Bogdan Caprita9c4aa222014-12-10 14:46:30 -080027 if err := client.Set(ctx, mgmt.ChildNameConfigKey, name); err != nil {
Jiri Simsaf57930f2014-11-05 15:19:31 -080028 vlog.Fatalf("Set(%v, %v) failed: %v", mgmt.ChildNameConfigKey, name, err)
Bogdan Capritac87a9142014-07-21 10:38:13 -070029 }
30 case exec.ErrNoVersion:
31 default:
32 vlog.Fatalf("GetChildHandle() failed: %v", err)
33 }
34}