• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Golang registry.Registry类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Golang中github.com/donovanhide/superfastmatch/registry.Registry的典型用法代码示例。如果您正苦于以下问题:Golang Registry类的具体用法?Golang Registry怎么用?Golang Registry使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



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

示例1: MonitorFeeds

func MonitorFeeds(reg *registry.Registry) {
	if reg.Feeds == "" {
		return
	}
	f, err := os.Open(reg.Feeds)
	if err != nil {
		glog.Fatalln("Reading feeds:", err)
	}
	defer f.Close()
	var feeds []Feed
	if err := json.NewDecoder(f).Decode(&feeds); err != nil {
		glog.Fatalln("Decoding feeds:", err)
	}
	db := reg.DB()
	defer db.Session.Close()
	for i := range feeds {
		if err := db.C("feeds").FindId(feeds[i].DocType).One(&feeds[i]); err != nil && err != mgo.ErrNotFound {
			glog.Fatalln("Finding existing feeds:", err)
		}
		feeds[i].stream, err = eventsource.Subscribe(feeds[i].Url, feeds[i].LastEventId)
		if err == nil {
			glog.Infof("Monitoring: %s", &feeds[i])
			go monitor(reg, &feeds[i])
		} else {
			glog.Fatalln("Eventsource:", err)
		}
	}
}
开发者ID:pietergvw,项目名称:superfastmatch,代码行数:28,代码来源:feed.go


示例2: monitor

func monitor(reg *registry.Registry, feed *Feed) {
	db := reg.DB()
	defer db.Session.Close()
	sig := make(chan os.Signal, 1)
	signal.Notify(sig, os.Interrupt)
	for {
		var fields map[string]interface{}
		form := make(url.Values)
		select {
		case <-sig:
			return
		case event := <-feed.stream.Events:
			if len(event.Data()) == 0 {
				continue
			}
			if err := json.Unmarshal([]byte(event.Data()), &fields); err != nil {
				glog.Errorln(feed.String(), err)
				continue
			}
			feed.DocId++
			id := &document.DocumentID{
				Doctype: feed.DocType,
				Docid:   feed.DocId,
			}
			for k, v := range fields {
				switch v.(type) {
				case string:
					form.Add(k, v.(string))
				case []string:
					form.Add(k, strings.Join(v.([]string), "|"))
				}
			}
			doc, err := document.NewDocument(id, &form)
			if err != nil {
				glog.Errorln(err)
				continue
			}
			if _, err := queue.NewQueueItem(r, "Add Document", nil, id, "", "", strings.NewReader(form.Encode())); err != nil {
				glog.Infoln("Queueing add document:", err)
				continue
			}
			glog.Infof("Received: %s %s", feed, doc.Title)
			feed.LastEventId = event.Id()
			if _, err := db.C("feeds").UpsertId(feed.DocType, feed); err != nil {
				glog.Fatalln("Updating feeds:", err)
			}
		case err := <-feed.stream.Errors:
			glog.Errorln(err)
		}
	}
}
开发者ID:pietergvw,项目名称:superfastmatch,代码行数:51,代码来源:feed.go


示例3: getQueueItem

func getQueueItem(id bson.ObjectId, registry *registry.Registry) (*QueueItem, error) {
	var item QueueItem
	db := registry.DB()
	defer db.Session.Close()
	if err := db.C("queue").FindId(id).Select(bson.M{"payload": 0}).One(&item); err != nil {
		return nil, fmt.Errorf("Queue item not found: %s", err)
	}
	return &item, nil
}
开发者ID:pietergvw,项目名称:superfastmatch,代码行数:9,代码来源:queue.go


示例4: GetDocument

func GetDocument(id *DocumentID, registry *registry.Registry) (*Document, error) {
	doc := &Document{Id: *id}
	db := registry.DB()
	defer db.Session.Close()
	if err := db.C("documents").FindId(doc.Id).One(doc); err != nil {
		return nil, err
	}
	return doc.init(), nil
}
开发者ID:pietergvw,项目名称:superfastmatch,代码行数:9,代码来源:document.go


示例5: Start

func Start(registry *registry.Registry) {
	glog.Infoln("Starting Queue Processor")
	registry.Queue = make(chan bool)
	client, err := posting.NewClient(registry)
	if err != nil {
		panic(err)
	}
	defer client.Close()
	if err = client.Initialise(); err != nil {
		panic(err)
	}
	db := registry.DB()
	defer db.Session.Close()
	queue := db.C("queue")
	registry.Routines.Add(1)
	var items QueueItemSlice
	for {
		start := time.Now()
		if err := queue.Find(bson.M{"status": "Queued"}).Sort("_id").Limit(10).All(&items); err != nil {
			panic(err)
		}
		for i, item := range items {
			if item.Command != items[0].Command {
				items = items[:i]
				break
			}
		}
		if err := items.Execute(registry, client); err != nil {
			glog.Errorln(err)
		}
		if len(items) > 0 {
			glog.Infof("Executed %d Queue items in %.2f secs", len(items), time.Now().Sub(start).Seconds())
			continue
		}
		select {
		case <-registry.Queue:
			glog.Infoln("Queue Processor Stopped")
			registry.Routines.Done()
			return
		default:
			time.Sleep(time.Second)
		}
	}
}
开发者ID:pietergvw,项目名称:superfastmatch,代码行数:44,代码来源:queue.go


示例6: GetQueue

func GetQueue(values url.Values, registry *registry.Registry) (*QueueResult, error) {
	var items []QueueItem
	db := registry.DB()
	defer db.Session.Close()
	if err := db.C("queue").Find(nil).Select(bson.M{"payload": 0}).Sort("_id").All(&items); err != nil {
		return nil, fmt.Errorf("Queue item not found: %s", err)
	}
	return &QueueResult{
		Rows:      items,
		TotalRows: len(items),
		Success:   true,
	}, nil
}
开发者ID:pietergvw,项目名称:superfastmatch,代码行数:13,代码来源:queue.go


示例7: Stats

func Stats(registry *registry.Registry) (map[string]int, error) {
	job := &mgo.MapReduce{
		Map:    "function() { emit(this.status, 1) }",
		Reduce: "function(key, values) { return Array.sum(values) }",
	}
	var result []struct {
		Id    string "_id"
		Value int
	}
	db := registry.DB()
	defer db.Session.Close()
	_, err := db.C("queue").Find(nil).MapReduce(job, &result)
	if err != nil {
		return nil, newQueueError("Queue Map Reduce Stats:", err)
	}
	stats := make(map[string]int)
	for _, item := range result {
		stats[item.Id] = item.Value
	}
	return stats, nil
}
开发者ID:pietergvw,项目名称:superfastmatch,代码行数:21,代码来源:queue.go


示例8: UpdateStatus

func (q *QueueItem) UpdateStatus(registry *registry.Registry, status string) error {
	db := registry.DB()
	defer db.Session.Close()
	return db.C("queue").UpdateId(q.Id, bson.M{"$set": bson.M{"status": status}})
}
开发者ID:pietergvw,项目名称:superfastmatch,代码行数:5,代码来源:queue.go


示例9: Save

func (q *QueueItem) Save(registry *registry.Registry) error {
	db := registry.DB()
	defer db.Session.Close()
	_, err := db.C("queue").UpsertId(q.Id, q)
	return err
}
开发者ID:pietergvw,项目名称:superfastmatch,代码行数:6,代码来源:queue.go


示例10: Save

func (m ThemeMap) Save(registry *registry.Registry) error {
	db := registry.DB()
	defer db.Session.Close()
	return db.C("theme").Insert(reflect.ValueOf(m).MapKeys())
}
开发者ID:pietergvw,项目名称:superfastmatch,代码行数:5,代码来源:fragment.go


示例11: Delete

func (document *Document) Delete(registry *registry.Registry) error {
	db := registry.DB()
	defer db.Session.Close()
	return db.C("documents").RemoveId(document.Id)
}
开发者ID:pietergvw,项目名称:superfastmatch,代码行数:5,代码来源:document.go


示例12: Save

func (document *Document) Save(registry *registry.Registry) error {
	db := registry.DB()
	defer db.Session.Close()
	_, err := db.C("documents").UpsertId(document.Id, document)
	return err
}
开发者ID:pietergvw,项目名称:superfastmatch,代码行数:6,代码来源:document.go



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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Golang otto.Value类代码示例发布时间:2022-05-23
下一篇:
Golang logger.Info函数代码示例发布时间:2022-05-23
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap