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