00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 #include "C_OpenAction.hpp"
00021 #include "GeneratorTrace.hpp"
00022 #include "GeneratorError.h"
00023 
00024 C_OpenAction::C_OpenAction(T_CmdAction        P_cmdAction,
00025                                        T_pControllers P_controllers)
00026   : C_CommandAction (P_cmdAction, P_controllers) {
00027 }
00028 
00029 
00030 C_OpenAction::~C_OpenAction() {
00031 }
00032 
00033 
00034 T_exeCode    C_OpenAction::execute(T_pCmd_scenario P_pCmd,
00035                                          T_pCallContext  P_callCtxt,
00036                                          C_MessageFrame *P_msg,
00037                                          C_MessageFrame *P_ref) {
00038 
00039   T_exeCode           L_exeCode    = E_EXE_NOERROR ;
00040   int                 L_id ;
00041   T_OpenStatus        L_openStatus ;
00042   struct timezone     L_timeZone                   ;
00043 
00044 
00045   
00046   L_id = m_controllers.m_channel_ctrl->open_local_channel(P_pCmd->m_channel_id,
00047                                                           m_args,
00048                                                           P_callCtxt->m_channel_table,
00049                                                           &L_openStatus);
00050   
00051   if (L_id != -1) {
00052     if (L_openStatus == E_OPEN_DELAYED) {
00053       L_exeCode = E_EXE_SUSPEND ;
00054       P_callCtxt->m_suspend_id = L_id ;
00055       P_callCtxt->m_suspend_msg = P_msg ;
00056       P_callCtxt->m_channel_id   = P_pCmd->m_channel_id ;
00057       P_callCtxt->m_channel_received   = P_callCtxt->m_channel_id ;
00058       gettimeofday(&P_callCtxt->m_current_time, &L_timeZone) ;
00059       
00060       
00061     }
00062   } else {
00063     GEN_ERROR(E_GEN_FATAL_ERROR, "Open failed");
00064     L_exeCode = E_EXE_ERROR ;
00065   }
00066   return (L_exeCode);
00067 }
00068 
00069 
00070 
00071 
00072