控制层方法的参数列表敲不出HttpSession类型

本文介绍如何通过在pom.xml文件中添加特定的jar包来解决Servlet API的依赖问题,确保项目的正常运行。

pom.xml文件中引入下面的jar包,问题解决。。

<dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.0.1</version>
      <scope>provided</scope>
</dependency>
int StreamTrans_Process(StreamTransCtx_S *ep) { if (ep == NULL || ep->ctx == NULL) { TRANSMIT_ERROR("params error!"); return -1; } int ret; uint64_t uptime_ms = 0; HttpStreamCtx_S *ctx = ep->ctx; int is_continue_process = 0; #ifdef DUAL_CAM // 判断当前app是否实际需要展示该码流, 若不需要则不取帧 if (!is_stream_need(ep)) { return 0; } #endif /* 优先尝试发送信令缓存区数据 */ if (!ctx->is_send_pending) { /* 发送未完成则返回 */ ret = HttpSession_TrySendReplyData((HttpCtx_S *)ctx->session_ctx); if (ret != TPHTTP_EC_OK) { if (ret == TPHTTP_EC_BUF_FULL || ret == TPHTTP_EC_WAIT) { return 0; } TRANSMIT_ERROR("send reply err(%d)", ret); goto Error_Handle; } } do { is_continue_process = 0; switch (ctx->state) { case eStreamTransState_Idle: StreamTrans_SetState(ctx, eStreamTransState_Take); case eStreamTransState_Take: { /* 1. 取帧 */ ret = StreamTrans_Take(ep); if (ret == (-ERR_BBUFFER_RELEASED)) { // 回放需特殊处理:给客户端回复finish if (ctx->http_type == eStreamTransType_Playback) { StreamTransWrap_PlaybackFinish(ctx->session_ctx); } // 下载时的处理:给客户端回复finish if (ctx->http_type == eStreamTransType_Download) { StreamTransWrap_DownloadFinish(ctx->session_ctx); } if (ctx->is_flowctr) { FlowCtr_Print(&ctx->flowctr); } } else if (ret == (-ERR_AVDM_NOT_READY)) { // 回放/下载拔出sd卡: 回复sd卡异常通知 if (ctx->http_type == eStreamTransType_Playback || ctx->http_type == eStreamTransType_Download) { StreamTransWrap_NotifySDCardStatus(ctx->session_ctx); } } if (ret != 0) { // break; } // 取到新帧,重置ts打包/发送控制信息 StreamTrans_UpdatePack(ep); // 切换到打包状态 StreamTrans_SetState(ctx, eStreamTransState_Pack); } case eStreamTransState_Pack: { /* 2. 进行分包及打包 */ ret = StreamTrans_Pack(ctx); if (ret == TRANSMIT_PACKET_IS_AGGREGATION_WAIT) { // 完成一帧数据打包,帧序号增加 ctx->seq++; StreamTrans_SetState(ctx, eStreamTransState_Take); break; } else if (ret != 0) { // 打包错误 TRANSMIT_ERROR("pack frame error!"); break; } // 打包完成切换到发送状态 StreamTrans_SetState(ctx, eStreamTransState_Send); } case eStreamTransState_Send: { // 流控策略: tcp/udt发送缓冲区满,下一次发送延后TREANSMIT_BLOCKING_WAITTIME if (ctx->is_blocking || ctx->is_flowctr) { uptime_ms = sys_uptime_ms(); } if (ctx->is_blocking) { if (uptime_ms < ctx->blocking_interval) { break; } ctx->is_blocking = 0; } if (ctx->is_flowctr) { // 流控自动码率限制 StreamTransWrap_AutoSpeedLimit(ctx); if (FlowCtr_IsBlocking(&ctx->flowctr, uptime_ms)) { break; } } /* 3. 发送已打包数据 */ ret = StreamTrans_SendV(ctx); #ifdef CIPC_TELEMETRY /* 数据埋点:记录推流信息 */ StreamTransWrap_RecordStreamSendInfo(ctx, ret); #endif // 粘包问题处理:记录http流报文是否未完整发送 ctx->is_send_pending = (ret == TPHTTP_EC_OK) ? 0 : 1; // 1.打包数据发送完成处理策略 if (ret == TPHTTP_EC_OK) { if (ctx->is_flowctr) { FlowCtr_PutData(&ctx->flowctr, ctx->pack.iovs.iov_len, uptime_ms); } StreamTrans_ResetPack(ep); if (ctx->pack.frame_idx >= ctx->pack.frame_len) { // 完成一帧数据打包及发送,帧序号增加 ctx->seq++; // 帧发送完成切换到取帧状态 StreamTrans_SetState(ctx, eStreamTransState_Take); } else { // 发送完一个分包,继续打包下一个分包 StreamTrans_SetState(ctx, eStreamTransState_Pack); is_continue_process = 1; } } // 3. 发送缓冲区满,流速控制策略 // TPHTTP_EC_BUF_FULL: 发送缓冲区满,发送不出数据处理策略 // TPHTTP_EC_WAIT: 发送不出数据处理策略 ,能发送部分数据处理策略 else if (ret == TPHTTP_EC_BUF_FULL || ret == TPHTTP_EC_WAIT) { // 发送缓冲区满,流控策略(延时TREANSMIT_BLOCKING_WAITTIME再发送) uptime_ms = sys_uptime_ms(); ctx->is_blocking = 1; ctx->blocking_interval = uptime_ms + TREANSMIT_BLOCKING_WAITTIME; // TRANSMIT_INFO("tcp/udt send buffer is full! ret=%d", ret); } else { goto Error_Handle; } } break; case eStreamTransState_Error: default: goto Error_Handle; break; } } while (is_continue_process); return 0; Error_Handle: /* 断开连接 */ TRANSMIT_ERROR("state(%d) error_code(%d)", ctx->state, ret); StreamTrans_SetState(ctx, eStreamTransState_Error); StreamTransWrap_ErrorHandle(ctx->session_ctx, ret); return -1; } 解释代码,详细一点
最新发布
10-15
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值