當前位置: 首頁>>代碼示例>>Golang>>正文


Golang Entity.Copy方法代碼示例

本文整理匯總了Golang中github.com/contiv/volplugin/db.Entity.Copy方法的典型用法代碼示例。如果您正苦於以下問題:Golang Entity.Copy方法的具體用法?Golang Entity.Copy怎麽用?Golang Entity.Copy使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在github.com/contiv/volplugin/db.Entity的用法示例。


在下文中一共展示了Entity.Copy方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。

示例1: traverse

// traverse walks the keyspace and converts anything that looks like an entity
// into an entity and returns it as part of the array.
//
// traverse will log & skip errors to ensure bad data will not break this routine.
func (c *Client) traverse(node *client.Node, obj db.Entity) []db.Entity {
	entities := []db.Entity{}
	if node.Dir {
		for _, inner := range node.Nodes {
			entities = append(entities, c.traverse(inner, obj)...)
		}
	} else {
		copy := obj.Copy()

		doAppend := true

		if err := jsonio.Read(copy, []byte(node.Value)); err != nil {
			// This is kept this way so a buggy policy won't break listing all of them
			logrus.Errorf("Received error retrieving value at path %q during list: %v", node.Key, err)
			doAppend = false
		}

		if err := copy.SetKey(c.trimPath(node.Key)); err != nil {
			logrus.Error(err)
			doAppend = false
		}

		// same here. fire hooks to retrieve the full entity. only log but don't append on error.
		if copy.Hooks().PostGet != nil {
			if err := copy.Hooks().PostGet(c, copy); err != nil {
				logrus.Errorf("Error received trying to run fetch hooks during %q list: %v", node.Key, err)
				doAppend = false
			}
		}

		if doAppend {
			entities = append(entities, copy)
		}
	}

	return entities
}
開發者ID:contiv,項目名稱:volplugin,代碼行數:41,代碼來源:client.go


注:本文中的github.com/contiv/volplugin/db.Entity.Copy方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。