diff options
Diffstat (limited to 'ACE/apps/JAWS3/small/SS_State_READ.cpp')
-rw-r--r-- | ACE/apps/JAWS3/small/SS_State_READ.cpp | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/ACE/apps/JAWS3/small/SS_State_READ.cpp b/ACE/apps/JAWS3/small/SS_State_READ.cpp new file mode 100644 index 00000000000..fe94c66831a --- /dev/null +++ b/ACE/apps/JAWS3/small/SS_State_READ.cpp @@ -0,0 +1,56 @@ +// $Id$ + +#include "ace/OS.h" + +#include "jaws3/IO.h" +#include "jaws3/Event_Completer.h" + +#include "SS_State_READ.h" +#include "SS_State_PARSE.h" +#include "SS_State_ERROR.h" +#include "SS_State_DONE.h" +#include "SS_Data.h" + +int +TeraSS_State_READ::service (JAWS_Event_Completer *ec, void *data) +{ + // Recover state. + TeraSS_Data *tdata = (TeraSS_Data *) data; + + // Read until we see a newline. + JAWS_IO::instance ()->recv ( tdata->peer ().get_handle () + , & tdata->mb () + , ec + ); + + return 0; +} + +JAWS_Protocol_State * +TeraSS_State_READ::transition ( const JAWS_Event_Result &result + , void * + , void * + ) +{ + // In the READ state, move to PARSE if success. + // Otherwise ERROR. + + JAWS_Protocol_State *next_state = 0; + + switch (result.status ()) + { + case JAWS_Event_Result::JE_OK: + next_state = TeraSS_State_PARSE::instance (); + break; + case JAWS_Event_Result::JE_ERROR: + next_state = TeraSS_State_ERROR::instance (); + break; + default: + // Just bail unceremoniously. + next_state = TeraSS_State_DONE::instance (); + break; + } + + return next_state; +} + |