接口详细设计文档.............................................. 错误!未定义书签。
1 编写目的.................................................. 错误!未定义书签。
2 名词解释.................................................. 错误!未定义书签。
3组件分布图................................................ 错误!未定义书签。
4 程序结构.................................................. 错误!未定义书签。
接入处理线程类图.................................. 错误!未定义书签。
接收线程类图...................................... 错误!未定义书签。
启动控制图........................................ 错误!未定义书签。
5 程序设计说明.............................................. 错误!未定义书签。
对原系统的改动.................................... 错误!未定义书签。
ThreadInSvcProcessor 接入处理器................... 错误!未定义书签。
类图.......................................... 错误!未定义书签。
时序图........................................ 错误!未定义书签。
流程图........................................ 错误!未定义书签。
ThreadInSvcProcessor类说明................... 错误!未定义书签。
PatternNewSyncAsyncInnerDir 同异步向内处理模式... 错误!未定义书签。
类图.......................................... 错误!未定义书签。
描述.......................................... 错误!未定义书签。
流程图........................................ 错误!未定义书签。
类说明........................................ 错误!未定义书签。
ThreadReplySvcProcessor 异步应答返回处理器........ 错误!未定义书签。
类图.......................................... 错误!未定义书签。
类说明........................................ 错误!未定义书签。
ClientInfo 客户端连接数据......................... 错误!未定义书签。
类图.......................................... 错误!未定义书签。
类描述........................................ 错误!未定义书签。
ClientInfoTable 客户端连接数据表.................. 错误!未定义书签。
类图.......................................... 错误!未定义书签。
类描述........................................ 错误!未定义书签。
ClientInfoTableMonitor 客户端连接数据表监控程序... 错误!未定义书签。
类图.......................................... 错误!未定义书签。
类说明........................................ 错误!未定义书签。
FrontMain 主控程序................................ 错误!未定义书签。
类间关系...................................... 错误!未定义书签。
流程图........................................ 错误!未定义书签。
类说明........................................ 错误!未定义书签。
问题.............................................. 错误!未定义书签。
1编写目的预期读者:对接口行为和目的有一定了解的人背景说明软件系统名称:接口前端接入服务器描述 <接口> 接收不同商家的接入,接收数据转发给主机服务器,并同步/异步将返回数据发给接入商家的行为2名词解释ChannelBase 渠道,通信基类,提供数据收发和释放的方法接口用子类实现来封装了不同通信方式目前有TCP短连接接入,从ACE Message_Queue中读取(IPC MessageQueue-> ACE_Message_Queue)Trade* trade 商家对象,代表的其实是针对该商家处理方法的集合将接入数据的商家称为服务商家而将请求面向的商家称为主机商家,主机商家负责同步/异步返回交易的应答数据给接口平台而接口(数据交换)平台是在两者之间的交换平台渠道工厂:把接入数据的渠道工厂统一定为服务渠道工厂,发送数据的渠道工厂统一定为主机通道工厂服务商家接口平台主机商家4 程序结构4.1 接入处理线程类图4.2 接收线程类图4.3 启动控制图5 程序设计说明5.1 对原系统的改动改变原有商家Trade 类,不存放渠道对象在商家类中,商家类只执行商家处理,不负责渠道的管理 改动原有的系统中所有模式的处理,模式处理必须对渠道的释放负责修改MidHstChannel ,添加后台服务需要的2个FML 字段,这两个字段是:PatternNewSyncAsyncInnerDir 是ProcessPattern 的一个子类,实现发送主机服务器并判断同/异步返回 同步直接返回给接入商家异步只做相应记录ThreadInSvcProcessor 是接入处理线程的主流程收数,接包无误后将处理控制权交给ProcessPattern 是后续处理的全部流程 抽象类FML域名描述S_INTERF_NO接口标识号,整数。
系统中接收异步响应程序的唯一编号。
用于标识请求的来源,异步应答根据这个号码分发给具体的接口程序。
S_TX_CTRL_ATTR交易控制属性,字符串。
接口都填0,表示这是正常的交易请求。
5.2T hreadInSvcProcessor 接入处理器5.2.1类图5.2.2时序图预先说明:ChannelBase 渠道通信基类,提供数据收发和释放的方法接口用子类实现来封装了不同通信方式。
目前有 TCP短连接接入。
从ACE Message_Queue中读取(IPC MessageQueue-> ACE_Message_Queue)Trade* trade 商家:代表的其实是针对该商家处理方法的集合5.2.3流程图5.2.4ThreadInSvcProcessor类说明5.2.4.1功能收取用不同渠道接入的外部商家的请求识别,解包执行处理的模式具体的流程在模式中控制,并不做控制模式可能有3种:1.无返回:发送后台,不接收应答对应模式PatternASyncInnerDir,需要修改原来的相关程序,在本文档中并不涉及2.有返回,根据返回的应答判断是同步返回还是异步返回如果接收的应答表明是同步返回,按正常模式返回如果接收的应答表明是异步返回,按异步模式处理对应模式PatternNewSyncASyncInnerDirThreadInSvcProcessor后续的ProcessPattern 应该是只负责接入后调用模式,并处理异常情况3.安全异常情况的模式下,调用模式PatternErrorSyncInner来处理,必须限制:主要的改动是渠道的释放由模式来管理涉及模式有PatternASyncInnerDir , PatternNewSyncASyncInnerDir , PatternErrorSyncInner (可能不全面)5.2.4.2程序描述ThreadInSvcProcessor功能: 构造函数性能:输人项: Trade* trade 接入数据处理的商家类SvcChannelFactory* pfactory 接入数据渠道工厂bool* exit 退出标志输出项:注释:5.2.4.3程序描述SvcRun功能: 主控流程输人项: 无输出项: 无流程:服务商家在开始已经生成,生存周期里一直存在一个DataBus对象(数据总线),每线程一个DataBus对象。
在生存周期里一直存在5.2.4.4程序描述a_process_loop功能:一次交易的处理输人项: Trade* pTrade , 接收数据的服务商家服务渠道SvcChannelFactory* pFactory,服务商家接收数据的主机通道SvcChannelFactory * pFactory 服务商家渠道的生成工厂。
DataBus* pDataBus预先创建的数据总线,不需要每次重建输出项: S_OK 成功完成其他出错信息流程:异常处理:记录出错信息和时间当异常发生在ExecPattern之外,释放渠道结束处理: (无论异常与否都执行):释放对方商家hst_trade释放模式对象Pattern注释: 为了便于单元测试,从SvcRun中分离出该方法也可以在SvcRun中实现上述的全部逻辑5.2.4.5程序描述GetChannel功能:调用svc_factory生成服务渠道性能:输人项: SvcChannelFactory* svc_factory 渠道工厂ACE_Time_Value* time_val 超时时间这个超时目前是一个固定值,和接收数据和发送数据的超时无直接联系ChannelBase* !=NULL 未取得=NULL 取得输出项: 返回值注释:出错信息在该方法中输出流程中只判断是否取得,没有取得则应该跳到开头进入下一次循环测试:对所有的可能生成的ChannelBase都进行一次测试5.2.4.6程序描述TradeRecvData功能: 商家通过渠道接收数据放入p_databus中输人项: ChannelBase* p_chnbase 收取的渠道Trade* p_recv_trade 接收的商家DataBus* p_databus 存放数据的DataBusACE_Time_Value* time_out 超时时间输出项: 0 成功-1 读取失败或者超时注释:主流程不记录详细出错信息5.2.4.7程序描述TradeInProcess功能: 执行商家的入口处理(识别,解包。