本文主要是介绍(P105)abcbank框架搭建(二):服务端银行交易基类和交易管理类等,时序图,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 1.服务端银行交易基类和交易管理类等
- 2.时序图
1.服务端银行交易基类和交易管理类等
- 类如下:
BankSession(与客户端通信)Transaction(银行交易基类)
派生类
BalanceInquiry
ChangePassword
CloseAccount
Deposit
OpenAccount
QueryAccountHistoryBill
QueryDayBill
QueryHistoryBill
Transfer
UserLogin
WithdrawalTransactionManager(交易管理类)
- 自定义协议:先考虑包头和包体的情况,先不考虑包尾。
数据包总体格式,包体不定长
请求包包头格式
应答包包头格式
错误代码与错误信息对照表
2.时序图
-
eg:P105\ABCBank\BankServer\Server.cpp,P105\ABCBank\BankServer\BankThread.cpp,P105\ABCBank\BankServer\BankSession.cpp,P105\ABCBank\BankServer\TransactionManager.cpp
-
服务端线程运行起来后,数据包的接收,解析等都在Run()方法里面,并在其中创建BankSession对象,让他与客户端进行通信,通过Recv()方法按照包头和包体的自定义的协议接收数据,并把他缓存起来;
DoAction()用来处理接收到的数据,将BankSession对象传递过来,调用TransactionManager的DoAction,会找到对应的交易对象Transaction对象来执行Execute,这样就避免了很多switch case语句或者if else语句来编写(用的是表驱动编程)。 -
处理完毕后,BankSession对象就可以销毁掉了。
-
eg:P105\ABCBank\BankServer\CMD\UserLogin.cpp
-
柜员登录的解包
包体假设是string,其内容是len+字符串内容,eg:包体是“hello”,那么打包进去的内容是5+“hello”。
请求包:包头+包体
应答包:包头+包体,实际上柜员登录的应答包体是空的,实际上打进去的是0
这篇关于(P105)abcbank框架搭建(二):服务端银行交易基类和交易管理类等,时序图的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!