Main Page   Class Hierarchy   Compound List   File List   Compound Members  

C_OpenAction.cpp

00001 /*
00002  *  This program is free software; you can redistribute it and/or modify
00003  *  it under the terms of the GNU General Public License as published by
00004  *  the Free Software Foundation; either version 2 of the License, or
00005  *  (at your option) any later version.
00006  *
00007  *  This program is distributed in the hope that it will be useful,
00008  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00009  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00010  *  GNU General Public License for more details.
00011  *
00012  *  You should have received a copy of the GNU General Public License
00013  *  along with this program; if not, write to the Free Software
00014  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00015  *
00016  * (c)Copyright 2006 Hewlett-Packard Development Company, LP.
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       // OPEN DELAYED => do not execute the command
00060       // just wait for open
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 

Generated on Wed Mar 7 14:44:51 2007 for Seagull by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002