티스토리 뷰

피연동에서 주연동으로 combuff 전달은 default 셋팅에서는 막혀있다.
주연동에서 피연동으로 넘어갈때 주연동의 Customize 헤더 combuff 항목에 대한 포인터는 PFM_HDR_EXT_CB이고 (복사된 combuff의 포인터) 피연동의 combuff 포인터가 PFM_HDR_EXT 가 된다.
연동 연산이 끝나고 다시 프로세스 주연동으로 돌아올때 PFM_HDR_EXT_CB 포인터에 있는 주연동의 combuff 값을 recover 하게 되므로 피연동의 combuff 값은 사라지게 된다.

피연동의 combuff 값을 주연동으로 전달하려면 다음과 같이 combuff가 주연동의 combuff 버젼으로 recover 되기전에  PFM_HDR_EXT_CB에 PFM_HDR_EXT 값을 memcpy 해주는 로직이 필요하다.



long pfmServiceModuleCopyCombuff( PfmServiceModuleContext *pfmServiceModuleContext )
{

        long rc = RC_NRM;

        PFM_SLOG( 'D', "PFM", USR_LOG, "======================================================");
        PFM_SLOG( 'D', "PFM", USR_LOG, "%s", __func__ );
        PFM_SLOG( 'D', "PFM", USR_LOG, "======================================================");

        memcpy(PFM_HDR_EXT_CB(pfmServiceModuleContext->cloneCombuffer), PFM_HDR_EXT , sizeof(PfmCustomizeHeaderStr));
        pfmMapperPrintPfmCustomizeHeaderStr( PFM_HDR_EXT_CB(pfmServiceModuleContext->cloneCombuffer) );

        PFM_SLOG( 'D', "PFM", USR_LOG, "======================================================");
        return RC_NRM;

}


이런식의 로직을 아래와 같이 link_flow.cfg의 link 함수 밑에 추가 해준다.








확인할점.

  1. pfmComBufMacro.h 에 pfmMapperPfmCustomizeHeaderStr.h 가 include 되어있는지 확인
  1. PFM_HDR_EXT와 PFM_HDR_EXT_CB에 void 타입대신 PfmCustomizeHeaderStr 적용
  2. bat_flow.cfg 의 batch선처리에서 system header와 customize header 초기화 해주는 부분이 있는지 확인.
  3. link_flow.cfg 에서 CATCH부분에도 해당 로직을 넣어줘야 연동서비스가 에러일때 컴버프 복사가능

댓글