当前位置: 首页>>代码示例>>Golang>>正文


Golang Txn.Params方法代码示例

本文整理汇总了Golang中github.com/trendrr/goshire/cheshire.Txn.Params方法的典型用法代码示例。如果您正苦于以下问题:Golang Txn.Params方法的具体用法?Golang Txn.Params怎么用?Golang Txn.Params使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在github.com/trendrr/goshire/cheshire.Txn的用法示例。


在下文中一共展示了Txn.Params方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。

示例1: DataPull

func DataPull(txn *cheshire.Txn) {
	part, ok := txn.Params().GetInt("partition")
	if !ok {
		cheshire.SendError(txn, 406, fmt.Sprintf("partition param is manditory"))
		return
	}
	dataChan := make(chan *dynmap.DynMap, 10)
	finishedChan := make(chan int)
	errorChan := make(chan error)
	go func() {
		for {
			select {
			case data := <-dataChan:
				//send a data packet
				res := cheshire.NewResponse(txn)
				res.SetTxnStatus("continue")
				res.Put("data", data)
				txn.Write(res)
			case <-finishedChan:
				res := cheshire.NewResponse(txn)
				res.SetTxnStatus("complete")
				txn.Write(res)
				return
			case err := <-errorChan:
				cheshire.SendError(txn, 406, fmt.Sprintf("Unable to unlock (%s)", err))
				return
			}
		}
	}()
	manager.partitioner.Data(part, dataChan, finishedChan, errorChan)
}
开发者ID:sourabhg,项目名称:goshire-shards,代码行数:31,代码来源:partition.go

示例2: ServiceGet

func ServiceGet(txn *cheshire.Txn) {
	routerTable, ok := Servs.RouterTable(txn.Params().MustString("service", ""))
	if !ok {
		cheshire.SendError(txn, 406, "Service param missing or service not found")
		return
	}
	res := cheshire.NewResponse(txn)
	res.Put("router_table", routerTable.ToDynMap())
	txn.Write(res)
}
开发者ID:sourabhg,项目名称:goshire-shards,代码行数:10,代码来源:controllers_api.go

示例3: Service

func Service(txn *cheshire.Txn) {
	//create a context map to be passed to the template
	context := make(map[string]interface{})

	service, ok := Servs.RouterTable(txn.Params().MustString("service", ""))
	context["service"] = service
	if !ok {
		cheshire.Flash(txn, "error", fmt.Sprintf("Cant find service"))
		cheshire.Redirect(txn, "/index")
		return
	}
	cheshire.RenderInLayout(txn, "/router_table.html", "/template.html", context)
}
开发者ID:sourabhg,项目名称:goshire-shards,代码行数:13,代码来源:controllers_html.go

示例4: Unlock

func Unlock(txn *cheshire.Txn) {
	partition, ok := txn.Params().GetInt("partition")
	if !ok {
		cheshire.SendError(txn, 406, fmt.Sprintf("partition param missing"))
		return
	}

	err := manager.UnlockPartition(partition)
	if err != nil {
		//now send back an error
		cheshire.SendError(txn, 406, fmt.Sprintf("Unable to lock partitions (%s)", err))
		return
	}
	response := cheshire.NewResponse(txn)
	txn.Write(response)
}
开发者ID:sourabhg,项目名称:goshire-shards,代码行数:16,代码来源:partition.go

示例5: NewService

func NewService(txn *cheshire.Txn) {
	log.Println(txn.Params())

	name, ok := txn.Params().GetString("service-name")
	if !ok {
		cheshire.Flash(txn, "error", "Service Name is manditory")
	}

	err := Servs.NewRouterTable(name, 512, 2)
	if err != nil {
		cheshire.Flash(txn, "error", fmt.Sprintf("%s", err))
	} else {
		cheshire.Flash(txn, "success", "successfully created router table")
	}
	cheshire.Redirect(txn, "/index")
}
开发者ID:sourabhg,项目名称:goshire-shards,代码行数:16,代码来源:controllers_html.go

示例6: SetRouterTable

func SetRouterTable(txn *cheshire.Txn) {
	rtmap, ok := txn.Params().GetDynMap("router_table")
	if !ok {
		cheshire.SendError(txn, 406, "No router_table")
		return
	}

	rt, err := ToRouterTable(rtmap)
	if err != nil {
		cheshire.SendError(txn, 406, fmt.Sprintf("Unparsable router table (%s)", err))
		return
	}

	_, err = manager.SetRouterTable(rt)
	if err != nil {
		cheshire.SendError(txn, 406, fmt.Sprintf("Unable to set router table (%s)", err))
		return
	}
	response := cheshire.NewResponse(txn)
	txn.Write(response)
}
开发者ID:sourabhg,项目名称:goshire-shards,代码行数:21,代码来源:partition.go

示例7: ShardNew

// Creates a new shard.  Does not register any partitions to it, unless the router table has no entries. in which case this
// gets all the partitions
func ShardNew(txn *cheshire.Txn) {
	routerTable, ok := Servs.RouterTable(txn.Params().MustString("service", ""))

	if !ok {
		cheshire.SendError(txn, 406, "Service param missing or service not found")
		return
	}

	Servs.Logger.Printf("Creating new shard for service: %s", routerTable.Service)

	address, ok := txn.Params().GetString("address")
	if !ok {
		cheshire.SendError(txn, 406, "address param missing")
		return
	}

	jsonPort, ok := txn.Params().GetInt("json_port")
	if !ok {
		cheshire.SendError(txn, 406, "json_port param missing")
		return
	}

	httpPort, ok := txn.Params().GetInt("http_port")
	if !ok {
		cheshire.SendError(txn, 406, "http_port param missing")
		return
	}

	entry := &shards.RouterEntry{
		Address:    address,
		JsonPort:   jsonPort,
		HttpPort:   httpPort,
		Partitions: make([]int, 0),
	}

	//check if we can connect!
	Servs.Logger.Printf("Attempting to connect to new entry...")
	// _, _, err := EntryCheckin(routerTable, entry)
	// if err != nil {
	//     cheshire.SendError(txn, 406, fmt.Sprintf("Unable to contact %s:%d Error(%s)", entry.Address, entry.HttpPort, err))
	//     return
	// }
	Servs.Logger.Printf("Success!")

	if len(routerTable.Entries) == 0 {
		totalPartitions, ok := txn.Params().GetInt("total_partitions")
		if !ok {
			cheshire.SendError(txn, 406, "total_partitions param is manditory for the first entry")
			return
		}

		//first entry, giving it all the partitions
		Servs.Logger.Printf("First Entry! giving it all %d partitions", totalPartitions)
		partitions := make([]int, 0)
		for p := 0; p < totalPartitions; p++ {
			partitions = append(partitions, p)
		}
		entry.Partitions = partitions
	} else {
		// not the first entry,
	}

	routerTable, err := routerTable.AddEntries(entry)
	if err != nil {
		cheshire.SendError(txn, 501, fmt.Sprintf("Error on add entry %s", err))
		return
	}

	Servs.Logger.Printf("Successfully created new entry: %s", entry.Id())

	Servs.SetRouterTable(routerTable)

	res := cheshire.NewResponse(txn)
	res.Put("router_table", routerTable.ToDynMap())
	txn.Write(res)
}
开发者ID:sourabhg,项目名称:goshire-shards,代码行数:78,代码来源:controllers_api.go


注:本文中的github.com/trendrr/goshire/cheshire.Txn.Params方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。