[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v3 8/8] RFC: Sketch constructors, DomainCreateNew
On 1/24/20 7:32 PM, Nick Rosbrook wrote: > Sorry for the late reply on this one. > >> +func NewDomainConfig(t DomainType) (*DomainConfig, error) { >> + var cconfig C.libxl_domain_config >> + >> + C.libxl_domain_config_init(&cconfig) >> + C.libxl_domain_build_info_init_type(&cconfig.b_info, >> C.libxl_domain_type(t)) >> + >> + gconfig := &DomainConfig{} >> + err := gconfig.fromC(&cconfig) >> + if err != nil { >> + return nil, err >> + } >> + >> + return gconfig, nil >> +} > > I think this is sufficient for the "New" functions; simple is probably > better here. I appreciate the idea of the `populate func` approach you > mentioned in another email, but I think in practice people will want > to leverage encoding/json or otherwise to unmarshal some data into a > DomainConfig etc. Or, we would hopefully be able to unmarshal an > xl.cfg. All that is to say, I think the approach you have shown here > gives us and package users the most flexibility. I think marshaling and unmarshalling should be fine, *as long as* the structure being unmarshalled actually went through the libxl_<type>_init() function first. In fact, I was kicking around the idea of adding a non-exported field to all the generated structs -- maybe "bool initalized" -- and having the .fromC() methods set this to 'true', and the .toC() methods return an error if it wasn't set. But then we'd need to write custom JSON marshallers to handle these. I'm not personally very interested in parsing xl.cfg files, but libxl has library functions to do that, so it should be something very easy to add if you want. (Although in fact, it looks like a lot of the code to actually interpret the results of the parsing is in xl; we might want to see about moving some of that functionality into libxlu.) > If we stick with this outline for constructors, they will be easy to > generate. I'm happy to work on that, unless you were already planning > on it. I'm afraid my 1 day a week of coding is going to have to be diverted to something else for a month or so; so please go ahead if you have the time. As far as further steps -- do you have a clear idea what kind of functionality you'd like to see possible by the time of the feature freeze (probably in May)? Do you have plans to use these bindings yourself, and if so, how? For my part, I want to start and reap guests. The latter will require adding event callback functionality which will require more thought (and perhaps expose more libxl issues). But I don't yet have a clear target beyond that. Re function calls -- do we want to just manually duplicate them as needed, or try to get some sort of IDL support? Other work items include: * modifying configure to detect the availability of go and enable the bindings if it's available * Enabling go build testing in the gitlab CI loop * Making `go get` work, which might involve having code to push post-generated code to a repo and tagging as appropriate -George _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |