当前位置: 首页 > news >正文

制作网站需要哪些成本石家庄新闻发布会

制作网站需要哪些成本,石家庄新闻发布会,大理企业网站建设,洛阳制作网站ihanshi在实际业务中,如果对数据的新/旧程度有要求,比如数据产生之后如果1ms都没有被使用,那么数据就相当于过期了,没有使用价值了,这种数据直接丢弃就可以了。如果有这种需求,那么可以考虑结合LifespanQosPolicy来…

在实际业务中,如果对数据的新/旧程度有要求,比如数据产生之后如果1ms都没有被使用,那么数据就相当于过期了,没有使用价值了,这种数据直接丢弃就可以了。如果有这种需求,那么可以考虑结合LifespanQosPolicy来实现。

(1)当DataWriter写数据History的数据,或者接收数据到DataReader的History的数据,均可以加时间戳

DataWriter侧写sourceTimestamp:

bool WriterHistory::prepare_and_add_change(

        CacheChange_t* a_change,

        WriteParams& wparams)

{

       ...

       a_change->sourceTimestamp = wparams.source_timestamp();

      ...

}

数据接收侧写sourceTimestamp:

bool MessageReceiver::proc_Submsg_DataFrag(

        CDRMessage_t* msg,

        SubmessageHeader_t* smh,

        bool was_decoded) const

{

    ...

    if (have_timestamp_)

    {

        ch.sourceTimestamp = timestamp_;

    }

    ...

}

(2)定时器

如果DataWriter或者DataReader使能了LifespanQosPolicy时,那么便会创建定时器来监督是不是有数据超时。

如下是DataWriter创建定时器的代码:

    lifespan_timer_ = new TimedEvent(publisher_->rtps_participant()->get_resource_event(),

                    [&]() -> bool

                    {

                        return lifespan_expired();

                    },

                    qos_.lifespan().duration.to_ns() * 1e-6);

在函数lifespan_expired中判断如果有数据超时,便会通过函数remove_change_pub将数据移出。

bool DataWriterImpl::lifespan_expired()

{

    while (history_->get_earliest_change(&earliest_change))

    {

  

        if (now - source_timestamp < lifespan_duration_us_)

        {

            auto interval = source_timestamp - now + lifespan_duration_us_;

            lifespan_timer_->update_interval_millisec(static_cast<double>(duration_cast<milliseconds>(interval).count()));

            return true;

        }

        // The earliest change has expired

        history_->remove_change_pub(earliest_change);

}

(3)example测试

通过helloworld进行测试,将超时时间设置的非常短100ns,实际测试可以看到DataReader接收不到DataWriter发送的数据。

writer_qos.lifespan().duration = eprosima::fastdds::dds::Duration_t(0,100);

reader_qos.lifespan().duration = eprosima::fastdds::dds::Duration_t(0,100);

默认情况下,lifespan qos策略不生效,也就是在History中的数据不存在超时的情况。

http://www.dtcms.com/a/451310.html

相关文章:

  • 整体设计 逻辑系统程序 之14 彻底分析了的四类文字/三种数字/三套符号
  • 网站设计心的h5 php网站开发
  • 网站建设的费用明细在线生成印章
  • 保健品企业网站孝昌县建设局网站
  • 网站商业授权计量检测网站平台建设方案
  • 页面做的比较炫酷的网站南通丰汇建设有限公司公司网站
  • 宁波网站制作设计国内网站绕过备案方法
  • 网站建设背景图网页装wordpress
  • 著名的国外设计网站有哪些WordPress访问mysql慢
  • 如何做网站 站长教课wordpress识图搜索代码
  • 中山网站建设价格平和网站建设
  • 上海网站建设小程序开发如何在工商局网站做企业年报
  • 简单电商网站模板下载wordpress导出xml
  • 站群cms网站系统网站后台 页面内容不显示
  • 网站建设需要审批吗网络推广的话术怎么说
  • 岳阳网站平台设计禁漫天入口18comic
  • 越南做企业网站p2p网站开发
  • 微信官方版官方网站友情链接建立遵循的原则包括
  • 网站网格设计亿图
  • 网站建设的基本教程网站seo啥意思
  • 网站开发调查表青岛网站建设免费
  • 网站开发工作周记深圳网站建设 联雅
  • 光全息|偏振复用的动态彩色全息
  • 网站设计论文大全淮南建设局网站备案
  • 横沥网站建设金属材料网站建设
  • 安装失败:安装无效或不兼容
  • 深圳住建网站win7 做服务器开网站
  • 安阳网站设计哪家专业手机大全及价格
  • 晚上网站推广软件免费版简单的网页制作软件
  • 网站快排是怎么做的企业邮箱注册步骤