func()

in internal/kernel/manage-object.go [11:35]


func (c *Client) ManageObject(v reflect.Value) (ref api.ObjectRef, err error) {
	// Ensuring we use a pointer, so we can see pointer-receiver methods, too.
	var vt reflect.Type
	if v.Kind() == reflect.Interface || (v.Kind() == reflect.Ptr && v.Elem().Kind() == reflect.Interface) {
		vt = reflect.Indirect(reflect.ValueOf(v.Interface())).Addr().Type()
	} else {
		vt = reflect.Indirect(v).Addr().Type()
	}
	interfaces, overrides := c.Types().DiscoverImplementation(vt)

	var resp CreateResponse
	resp, err = c.Create(CreateProps{
		FQN:        objectFQN,
		Interfaces: interfaces,
		Overrides:  overrides,
	})

	if err == nil {
		if err = c.objects.Register(v, resp.InstanceID); err == nil {
			ref.InstanceID = resp.InstanceID
		}
	}

	return
}