/* #TODO FTPConnect does not send a ftp Command, yet it is treated as one because there is a welcome message from teh server prepended with a reply status code. REMOVE THIS ANAMOLY. */ enum protocolStatus FTPClient::ctrlConnect() { if ( connect(this->ctrlfd,(struct sockaddr*)&(this->serverCtrlAddr), sizeof(this->serverCtrlAddr) ) < 0 ) { perror("Connect :: ( Control Channel )"); exit(1); } // #### Wait for the server to reply that the server is ready ##### ssize_t numBytes = receiveReply(this->ctrlfd); std::cerr << interpretResponse(this->rbuffer, numBytes) << std::endl; return checkCommandStatus(); }
// Here the argument 'command' contains "the FTP command + it's assoc. param" enum protocolStatus FTPClient::writeCtrlSock(std::string command) { const char* tptr; tptr = command.c_str(); bzero(this->sbuffer,S_BUFFER_SIZE); strcpy((char *)this->sbuffer, tptr); writeSock(this->ctrlfd,command.length()); ssize_t numBytes = receiveReply(this->ctrlfd); std::cerr << interpretResponse(this->rbuffer, numBytes) << std::endl; return checkCommandStatus(); }
int main( int argc, char** argv ) { SoapCtx* request; SoapCtx* response; herror_t error; int ii; /* The array of parameter values to be fetched from argv. */ char* parameters[Parameter_Num_Pos]; xmlChar* buildID; if ( argc != Parameter_Num_Pos + 1 ) { printf( "Regresstor: Invalid Number of arguments! Num given: %d\n", argc ); printUsage(); return EXIT_FAILURE; } initParametersArray( parameters ); fetchParametersFromArgv( parameters, argc, argv ); if ( ! checkParameters( parameters ) ) { printUsage(); return EXIT_FAILURE; } printf( "Regresstor: calling web service %s(), %s at %s.\n", Regresstor_SubmitCheckMethod, Regresstor_URN, parameters[URL_Pos]); /* SOAP CALL */ error = soap_client_init_args( argc, argv ); if ( error != H_OK ) { log_error4( "%s():%s [%d]", herror_func(error), herror_message(error), herror_code(error) ); herror_release(error); return EXIT_FAILURE; } error = soap_ctx_new_with_method( Regresstor_URN, Regresstor_SubmitCheckMethod, &request ); if ( error != H_OK ) { log_error4( "%s():%s [%d]", herror_func(error), herror_message(error), herror_code(error) ); herror_release(error); return EXIT_FAILURE; } /* Add parameters into envelope except for the URL */ soap_env_push_item( request->env, NULL, "parameters" ); for ( ii = 0; ii < URL_Pos; ++ii ) { if ( ii == OutputLocation_Pos ) { /* Attach file */ char* contents; char* paramName = NULL; int sendDummyFile = 1; paramName = "Output"; if ( strcmp( parameters[ii], "none" ) != 0 ) { contents = getFileContents( parameters[ii] ); if ( contents != NULL ) { soap_env_add_item( request->env, "xsd:string", paramName, contents ); free( contents ); sendDummyFile = 0; } } if ( sendDummyFile ) { soap_env_add_item( request->env, "xsd:string", paramName, "No output file" ); } } else { soap_env_add_item( request->env, "xsd:string", parameterNames[ii], parameters[ii] ); } } /* Check commandline to see if diff passed. If fail, add a "Diff Failed" sub test */ if ( strcmp( parameters[Passed_Pos], "0" ) == 0 ) { /* Add the sub test */ soap_env_add_item( request->env, "xsd:string", "FailedSubTests", "Error failure" ); } soap_env_pop_item( request->env ); error = soap_client_invoke( request, &response, parameters[URL_Pos], ""); if ( error != H_OK ) { log_error4( "[%d] %s(): %s ", herror_code(error), herror_func(error), herror_message(error) ); herror_release( error ); soap_ctx_free( request ); return EXIT_FAILURE; } interpretResponse( response, &buildID ); soap_ctx_free( request ); soap_ctx_free( response ); soap_client_destroy(); return EXIT_SUCCESS; }