int TeraSS_State_WRITE::service (JAWS_Event_Completer *ec, void *data) { JAWS_Event_Result fake_bad_result (0, JAWS_Event_Result::JE_ERROR); // Retrieve context TeraSS_Data *tdata = (TeraSS_Data *) data; ACE_FILE_Addr file_addr (tdata->mb ().rd_ptr ()); ACE_FILE_Connector file_connector; if (file_connector.connect ( tdata->file_io () , file_addr , 0 , ACE_Addr::sap_any , 0 , O_RDONLY ) < 0) { ec->output_complete (fake_bad_result, & tdata->file_io ()); return 0; } JAWS_IO::instance ()->transmit ( tdata->peer ().get_handle () , tdata->file_io ().get_handle () , ec , & tdata->file_io () ); return 0; }
int TeraSS_State_ERROR::service (JAWS_Event_Completer *ec, void *data) { // Send an error message. TeraSS_Data *tdata = (TeraSS_Data *) data; tdata->mb ().reset (); tdata->mb ().copy ("FAIL\r\n", 6); JAWS_IO::instance ()->send ( tdata->peer ().get_handle () , & tdata->mb () , ec ); return 0; }
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; }