opnet之queue之自行设计acb_fifo

来源:互联网 发布:在淘宝上赌徒跳刀 编辑:程序博客网 时间:2024/05/22 03:25

自己设计
作者设计

进程模型

这里写图片描述

SV

int server_busy;double service_rate;Objid own_id;

TV

Packet*          pkptr;OpT_Packet_Size  pk_len;double          pk_svc_time;

HB

#define QUEUE_EMPTY     (op_q_empty ())#define SVC_COMPLETION  op_intrpt_type () == OPC_INTRPT_SELF#define ARRIVAL         op_intrpt_type () == OPC_INTRPT_STRM

Interface-> Model Attributes

新增service_rate

init

server_busy = 0;own_id = op_id_self ();op_ima_obj_attr_get (own_id, "service_rate", &service_rate);

src_rx

pkptr = op_pk_get (op_intrpt_strm ());op_subq_pk_insert (0, pkptr, OPC_QPOS_TAIL);if(!QUEUE_EMPTY && server_busy == 0){pkptr = op_subq_pk_access (0, OPC_QPOS_HEAD);pk_len = op_pk_total_size_get (pkptr);pk_svc_time = (double) pk_len / service_rate;op_intrpt_schedule_self (op_sim_time () + pk_svc_time, 0);server_busy = 1;}

svc_compl

pkptr = op_subq_pk_remove (0, OPC_QPOS_HEAD);op_pk_send_forced (pkptr, 0);server_busy = 0;if(!QUEUE_EMPTY){pkptr = op_subq_pk_access (0, OPC_QPOS_HEAD);pk_len = op_pk_total_size_get (pkptr);pk_svc_time = (double) pk_len / service_rate;op_intrpt_schedule_self (op_sim_time () + pk_svc_time, 0);server_busy = 1;}

tags:opnet

1 0
原创粉丝点击