本文整理汇总了Golang中github.com/lxc/lxd/shared.WriteAll函数的典型用法代码示例。如果您正苦于以下问题:Golang WriteAll函数的具体用法?Golang WriteAll怎么用?Golang WriteAll使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了WriteAll函数的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: send
func (c *migrationFields) send(m proto.Message) error {
/* gorilla websocket doesn't allow concurrent writes, and
* panic()s if it sees them (which is reasonable). If e.g. we
* happen to fail, get scheduled, start our write, then get
* unscheduled before the write is bit to a new thread which is
* receiving an error from the other side (due to our previous
* close), we can engage in these concurrent writes, which
* casuses the whole daemon to panic.
*
* Instead, let's lock sends to the controlConn so that we only ever
* write one message at the time.
*/
c.controlLock.Lock()
defer c.controlLock.Unlock()
w, err := c.controlConn.NextWriter(websocket.BinaryMessage)
if err != nil {
return err
}
defer w.Close()
data, err := proto.Marshal(m)
if err != nil {
return err
}
return shared.WriteAll(w, data)
}
示例2: applyPostDeviceConfig
func (c *containerLXD) applyPostDeviceConfig() error {
// applies config that must be delayed until after devices are
// instantiated, see bug #588 and fix #635
if lxcConfig, ok := c.config["raw.lxc"]; ok {
if err := validateRawLxc(lxcConfig); err != nil {
return err
}
f, err := ioutil.TempFile("", "lxd_config_")
if err != nil {
return err
}
err = shared.WriteAll(f, []byte(lxcConfig))
f.Close()
defer os.Remove(f.Name())
if err != nil {
return err
}
if err := c.c.LoadConfigFile(f.Name()); err != nil {
return fmt.Errorf("problem applying raw.lxc, perhaps there is a syntax error?")
}
}
return nil
}
示例3: send
func (c *migrationFields) send(m proto.Message) error {
w, err := c.controlConn.NextWriter(websocket.BinaryMessage)
if err != nil {
return err
}
defer w.Close()
data, err := proto.Marshal(m)
if err != nil {
return err
}
return shared.WriteAll(w, data)
}
示例4: applyConfig
func (c *lxdContainer) applyConfig(config map[string]string, fromProfile bool) error {
var err error
for k, v := range config {
switch k {
case "limits.cpus":
// TODO - Come up with a way to choose cpus for multiple
// containers
var vint int
count, err := fmt.Sscanf(v, "%d", &vint)
if err != nil {
return err
}
if count != 1 || vint < 0 || vint > 65000 {
return fmt.Errorf("Bad cpu limit: %s\n", v)
}
cpuset := fmt.Sprintf("0-%d", vint-1)
err = c.c.SetConfigItem("lxc.cgroup.cpuset.cpus", cpuset)
case "limits.memory":
err = c.c.SetConfigItem("lxc.cgroup.memory.limit_in_bytes", v)
default:
if strings.HasPrefix(k, "user.") {
// ignore for now
err = nil
}
/* Things like security.privileged need to be propagated */
c.config[k] = v
}
if err != nil {
shared.Debugf("error setting %s: %q\n", k, err)
return err
}
}
if fromProfile {
return nil
}
if lxcConfig, ok := config["raw.lxc"]; ok {
if err := validateRawLxc(lxcConfig); err != nil {
return err
}
f, err := ioutil.TempFile("", "lxd_config_")
if err != nil {
return err
}
err = shared.WriteAll(f, []byte(lxcConfig))
f.Close()
defer os.Remove(f.Name())
if err != nil {
return err
}
if err := c.c.LoadConfigFile(f.Name()); err != nil {
return fmt.Errorf("problem applying raw.lxc, perhaps there is a syntax error?")
}
}
return nil
}