//方法一:多继承
/*
//class mainop:public CSocketProtocol, public CEncDesProtocol{
}*/
//方法二:组合,在类里面组合对象
class mainop{
public:
mainop(){
this->sp = NULL;
this->ed = NULL;
}
mainop(CSocketProtocol *sp, CEncDesProtocol *ed){
this->sp = sp;
this->ed = ed;
}
//注入接口
setEd(CSocketProtocol *ed)
{
this->ed = ed;
}
//注入接口
setSp(CSocketProtocol *sp)
{
this->sp = sp;
}
//业务框架
int SckSendAndRec_EncDec(unsign char *in, int inlen, unsign char *out, int outlen)
{
int ret = 0;
unsign char data[4096] = {0};
int datalen;
int ret = sp->cltSocketInit();
if (ret != 0){
return ret;
}
ret = ed->Encdata(in, inlen, data, &datalen);
if (ret != 0){
goto end;
}
ret = sp->cltSocketSend(data, datalen);
if (ret != 0){
goto end;
}
ret = sp->cltSocketRec(data, &datalen);
if (ret != 0){
goto end;
}
ret = ed->Desdata(data, datalen, out, outlen);
if (ret != 0){
goto end;
}
end:
sp->cltSocketdestory();
}
CSocketProtocol *sp;
CEncDesProtocol *ed;
}
int main(){
int ret = 0;
unsign char in[4096] = {0};
unsign char out[4096] = {0};
int inlen = 0;
out outlen = 0;
strcpy(in, "11111111111");
int inlen = strlen(in);
mainop *mymainop = new mainop();
CSocketProtocol *sp = new CSckFactory1();
CEncDesProtocol *ed = new CHwEncDes();
mainop->setsp(sp);
mainop->setEd(ed);
ret = mymainop->SckSendAndRec_EncDec(sp, ed, in, inlen, out, &outlen);
if (ret != 0) {
return ret;
}
delete sp;
delete ed;
delete mymainop;
return 0;
}
/*业务框架,多态的平台
int SckSendAndRec_EncDec(CSocketProtocol *sp, CEncDesProtocol *ed, unsign char *in, int inlen, unsign char *out, int outlen)
{
int ret = 0;
unsign char data[4096] = {0};
int datalen;
int ret = sp->cltSocketInit();
if (ret != 0){
return ret;
}
ret = ed->Encdata(in, inlen, data, &datalen);
if (ret != 0){
goto end;
}
ret = sp->cltSocketSend(data, datalen);
if (ret != 0){
goto end;
}
ret = sp->cltSocketRec(data, &datalen);
if (ret != 0){
goto end;
}
ret = ed->Desdata(data, datalen, out, outlen);
if (ret != 0){
goto end;
}
end:
sp->cltSocketdestory();
}
int main(){
int ret = 0;
unsign char in[4096] = {0};
unsign char out[4096] = {0};
int inlen = 0;
out outlen = 0;
strcpy(in, "11111111111");
int inlen = strlen(in);
CSocketProtocol *sp = new CSocketProtocol();
CEncDesProtocol *ed = new CEncDesProtocol();
ret = SckSendAndRec_EncDec(sp, ed, in, inlen, out, &outlen);
if (ret != 0) {
return ret;
}
delete sp;
delete ed;
return 0;
}*/