多个工作流统一处理返回算法
来源:互联网 发布:我的淘宝登陆 编辑:程序博客网 时间:2024/06/06 12:51
避免重复使用if语句,或直接执行return语句,避免使用goto语句
//Title: Tackle the multple workflow together by once at the end//Author: Aletenze//Time: 2011-12-10//Version: 1.0.0.2/* 接口通用返回码-1 - 参数错误-2 - 串口未打开-3 - 写串口数据失败-4 - 读串口数据失败-5 - 包检验出错-6 - 包错-7 - 固件错误-999 - 未知错误(异常)*/#define SUCCESS_RETURN_VALUE (0) //函数成功执行返回值#define TL_SUCCESS(0)#define PARAM_ERR(-1)#define PORT_DISOPEN_ERR(-2)#define WRITEDATA_ERR(-3)#define READDATA_ERR(-4)#define PKG_CHECK_ERR(-5)#define PKG_DATA_ERR(-6)#define FIRMWARE_ERR (-7)#define UNKNOWN_ERR(-999)#define MAX_PROCESS_COUNT (1<<31) //最大的整数, max(int)#define BREAK_WHILE_VALUE MAX_PROCESS_COUNT //最大的process数目int process1(); //工作1int process2();// 工作2int process3(); //工作3int LogInfo(LPCTSTR format,...); // 记录日志函数int getRet(int param1, int param2){int nRet=0;const UINT PROCESSNUM=3;int processcount=0;int temp_success_return=true;ostringstream logos;//---------------------检查参数是否正确----------------------if(!Check_param(param1,param2)){processcount=PARAM_ERR;}//---------------------开始执行工作流---------------------while(temp_success_return && processcount<PROCESSNUM && processcount>=0){switch (processcount){case 0:{//"{}"以内为可变内容,只要最终得到一个nRet值即可// 为了保证,这个算法的正常执行,避免死循环,请不要在"{}"//内部更改 processcount的值,也不要执行“break”动作nRet=process1();}temp_success_return=(SUCCESS_RETURN_VALUE==nRet);processcount++;break;case 1:{//"{}"以内为可变内容,只要最终得到一个nRet值即可// 为了保证,这个算法的正常执行,避免死循环,请不要在"{}"//内部更改 processcount的值,也不要执行“break”动作nRet=process2();}temp_success_return=(SUCCESS_RETURN_VALUE==nRet);processcount++;break;case 2:{//"{}"以内为可变内容,只要最终得到一个nRet值即可// 为了保证,这个算法的正常执行,避免死循环,请不要在"{}"//内部更改 processcount的值,也不要执行“break”动作nRet=process3();}temp_success_return=(SUCCESS_RETURN_VALUE==nRet);processcount++;break;default:processcount=BREAK_WHILE_VALUE;}}//---------------------结束工作流处理,进行结果判断---------------------switch(processcount){case PARAM_ERR:{logos<<"Param , Return "}case 1:{logos<<"process1, Return "switch(nRet){case -101:logos<<"-101";break;case -102:logos<<"-102";break;default:logos<<"未知返回值";}}break;case 2:{logos<<"process2, Return "switch(nRet){case -201:logos<<"-201";break;case -202:logos<<"-202";break;default:logos<<"未知返回值";}}break;case 3:{logos<<"process3, Return "switch(nRet){case -301:logos<<"-301";break;case -302:logos<<"-302";break;default:logos<<"未知返回值";}}break;default:logos<<"哈哈^_^这个算法你还不会用,嘻嘻,好好分析一下,你会用的~~~";}LogInfo("%s\n",logos.str().c_str());return nRet;}
- 多个工作流统一处理返回算法
- JSON统一格式返回值,统一异常处理
- ResponseBodyAdvice 统一处理返回值/响应体
- SpringMVC-----SpringMVC统一处理Controller返回值
- SpringMVC统一异常处理 返回JSON解决方案
- mysql limit 处理多个返回结果
- 如果优雅地处理多个请求并在请求结束后统一处理
- 多个jenkins统一路径
- spring mvc统一处理异常时候返回json或xml
- 使用Gson对多个枚举类型的统一序列化/反序列化处理
- 一个项目:统一返回值,控制层统一异常处理与项目添加
- 智遥工作流是如何处理一个领导,负责多个部门的事务
- ADO 中处理多个返回结果集
- 存储过程返回多个结果集处理
- C#处理MySql多个返回集的方法
- PHP关于Ajax返回多个json数据的处理
- Atitit jdbc 处理返回多个结果集
- Spring 返回JSON格式对日期字段的返回统一处理
- 一次艰辛的数据导入
- RMAN启动问题:不是内部或外部命令
- Ubuntu系统建立Andriod编译环境
- 找到组织了---perftest工作室 TIB工作室
- android socket通信
- 多个工作流统一处理返回算法
- Ubuntu光盘启动重新安装GRUB到主引导区MBR修复Linux启动
- 关于驱动程序的可移植性
- Java 简单的计算器
- 格式化输出数组.
- 利用SNMP4J实现Snmp Trap完整例子
- Linux系统下强制踢掉登录用户
- DB2客户端连接服务端的方法
- oracle 11g ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务