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

Golang v5.SimpleMessage类代码示例

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

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



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

示例1: GetRecords

func GetRecords(msg *bw.SimpleMessage) []*MetadataRecord {
	parts := strings.Split(msg.URI, "/")
	uri := strings.Join(parts[:len(parts)-2], "/") + "/*"
	var records []*MetadataRecord

	for _ = range msg.POs {
		rec := &MetadataRecord{
			Key:       parts[len(parts)-1],
			Namespace: parts[0],
			URI:       uri,
			VK:        msg.From,
			Time:      time.Now().UnixNano(),
			Msg:       msg,
		}
		meta, ok := msg.GetOnePODF(bw.PODFSMetadata).(bw.MetadataPayloadObject)
		if ok {
			val := meta.Value()
			if val != nil {
				rec.Value = []byte(val.Value)
			} else {
				rec.Value = meta.GetContents()
			}
		} else {
			rec.Value = msg.POs[0].GetContents()
		}
		records = append(records, rec)
	}
	return records
}
开发者ID:gtfierro,项目名称:giles2,代码行数:29,代码来源:manager.go


示例2: listenQueries

func (bwh *BOSSWaveHandler) listenQueries(msg *bw.SimpleMessage) {
	var (
		// the publisher of the message. We incorporate this into the signal URI
		fromVK string
		// the computed signal based on the VK and query nonce
		signalURI string
		// query message
		query KeyValueQuery
	)
	fromVK = msg.From
	po := msg.GetOnePODF(GilesKeyValueQueryPIDString)
	if po == nil { // no query found
		return
	}

	if obj, ok := po.(bw.MsgPackPayloadObject); !ok {
		log.Error("Received query was not msgpack")
	} else if err := obj.ValueInto(&query); err != nil {
		log.Error(errors.Wrap(err, "Could not unmarshal received query"))
		return
	}

	signalURI = fmt.Sprintf("%s,queries", fromVK[:len(fromVK)-1])

	log.Infof("Got query %+v", query)
	res, err := bwh.a.HandleQuery(query.Query)
	if err != nil {
		msg := QueryError{
			Query: query.Query,
			Nonce: query.Nonce,
			Error: err.Error(),
		}
		po, _ := bw.CreateMsgPackPayloadObject(GilesQueryErrorPID, msg)
		log.Error(errors.Wrap(err, "Error evaluating query"))
		if err := bwh.iface.PublishSignal(signalURI, po); err != nil {
			log.Error(errors.Wrap(err, "Error sending response"))
		}
	}

	var reply []bw.PayloadObject

	switch t := res.(type) {
	case common.SmapMessageList:
		log.Debug("smap messages list")
		pos := POsFromSmapMessageList(query.Nonce, t)
		reply = append(reply, pos...)
	case common.DistinctResult:
		log.Debug("distinct list")
		reply = append(reply, POFromDistinctResult(query.Nonce, t))
	default:
		log.Debug("type %T", res)
	}
	log.Debugf("Reply on %s: %d", bwh.iface.SignalURI(signalURI), len(reply))

	if err := bwh.iface.PublishSignal(signalURI, reply...); err != nil {
		log.Error(errors.Wrap(err, "Error sending response"))
	}
}
开发者ID:gtfierro,项目名称:giles2,代码行数:58,代码来源:service.go


示例3: send

func (f *forwarder) send(msg *bw.SimpleMessage) {
	f.RLock()
	for view := range f.forwardList {
		select {
		case view.C <- msg:
		default:
			log.Warningf("Dropping msg")
			msg.Dump()
		}
	}
	f.RUnlock()
}
开发者ID:gtfierro,项目名称:giles2,代码行数:12,代码来源:subscribe.go


示例4: GetDistinctList

func GetDistinctList(nonce uint32, msg *bw.SimpleMessage) (bool, messages.QueryListResult, error) {
	var (
		po         bw.PayloadObject
		listResult messages.QueryListResult
	)
	if po = msg.GetOnePODF(messages.GilesQueryListResultPIDString); po != nil {
		if err := po.(bw.MsgPackPayloadObject).ValueInto(&listResult); err != nil {
			return false, listResult, err
		}
		if listResult.Nonce != nonce {
			return false, listResult, nil
		}
		return true, listResult, nil
	}
	return false, listResult, nil
}
开发者ID:gtfierro,项目名称:giles2,代码行数:16,代码来源:api.go


示例5: GetTimeseries

// Extracts Timeseries from Giles response. Returns false if no related message was found
func GetTimeseries(nonce uint32, msg *bw.SimpleMessage) (bool, messages.QueryTimeseriesResult, error) {
	var (
		po                bw.PayloadObject
		timeseriesResults messages.QueryTimeseriesResult
	)
	if po = msg.GetOnePODF(messages.GilesQueryTimeseriesResultPIDString); po != nil {
		if err := po.(bw.MsgPackPayloadObject).ValueInto(&timeseriesResults); err != nil {
			return false, timeseriesResults, err
		}
		if timeseriesResults.Nonce != nonce {
			return false, timeseriesResults, nil
		}
		return true, timeseriesResults, nil
	}
	return false, timeseriesResults, nil
}
开发者ID:gtfierro,项目名称:giles2,代码行数:17,代码来源:api.go


示例6: GetError

// Extracts QueryError from Giles response. Returns false if no related message was found
func GetError(nonce uint32, msg *bw.SimpleMessage) (bool, error) {
	var (
		po         bw.PayloadObject
		queryError messages.QueryError
	)
	if po = msg.GetOnePODF(messages.GilesQueryErrorPIDString); po != nil {
		if err := po.(bw.MsgPackPayloadObject).ValueInto(&queryError); err != nil {
			return false, err
		}
		if queryError.Nonce != nonce {
			return false, nil
		}
		return true, nil
	}
	return false, nil
}
开发者ID:gtfierro,项目名称:giles2,代码行数:17,代码来源:api.go


示例7: listenCQBS

func (bwh *BOSSWaveHandler) listenCQBS(msg *bw.SimpleMessage) {
	var (
		// the publisher of the message. We incorporate this into the signal URI
		fromVK string
		// query message
		query KeyValueQuery
	)
	fromVK = msg.From
	po := msg.GetOnePODF(GilesKeyValueQueryPIDString)
	if po == nil { // no query found
		return
	}

	if obj, ok := po.(bw.MsgPackPayloadObject); !ok {
		log.Error("Received query was not msgpack")
	} else if err := obj.ValueInto(&query); err != nil {
		log.Error(errors.Wrap(err, "Could not unmarshal received query"))
	}

	subscription := bwh.StartSubscriber(fromVK, query)
	go bwh.a.HandleNewSubscriber(subscription, query.Query)
}
开发者ID:gtfierro,项目名称:giles2,代码行数:22,代码来源:service.go



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


鲜花

握手

雷人

路过

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

请发表评论

全部评论

专题导读
上一篇:
Golang v2.DiscardHandler函数代码示例发布时间:2022-05-28
下一篇:
Golang sockjs.Session类代码示例发布时间:2022-05-28
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

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

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

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