XBOX::VError VHTTPWebsocketHandler::ReadBytes(void* inData, uLONG* ioLength) { XBOX::VError l_err; l_err = fEndpt->Read(inData,ioLength); if (l_err == VE_SRVR_RESOURCE_TEMPORARILY_UNAVAILABLE) { if (*ioLength) { DebugMsg("NON-NULL LENGTH SHOULD NOT HAPPEN!!!!!\n"); } l_err = VE_OK;//'cos non blocking } if (l_err) { DebugMsg("ReadBytes ERR=%d\n",l_err); DebugMsg("ERRCODE_FROM_VERROR=%d\n",ERRCODE_FROM_VERROR(l_err)); DebugMsg("NATIVE_ERRCODE_FROM_VERROR=%d\n",NATIVE_ERRCODE_FROM_VERROR(l_err)); //xbox_assert(!l_err); } return l_err; }
void VJSXMLHttpRequest::_Send(XBOX::VJSParms_callStaticFunction& ioParms, XMLHttpRequest* inXhr) { XBOX::VString pData; bool resData; resData=ioParms.GetStringParam(1, pData); if(inXhr) //Data is optional, we don't care if it's not set { XBOX::VError impl_err=XBOX::VE_OK; XBOX::VError res=inXhr->Send(pData, &impl_err); if(res!=XBOX::VE_OK) { uLONG code=ERRCODE_FROM_VERROR(impl_err); uLONG comp=COMPONENT_FROM_VERROR(impl_err); //XBOX::VErrorBase* verrBase = new XBOX::VErrorBase ( impl_err, 0 ); //XBOX::VTask::GetCurrent ( )-> PushRetainedError ( verrBase ); //We may have an implementation error which might be documented if(impl_err!=XBOX::VE_OK) XBOX::vThrowError(impl_err); //Now throw the more generic error XBOX::vThrowError(res); } } else XBOX::vThrowError(VE_XHRQ_JS_BINDING_ERROR); }
XBOX::VError VHTTPWebsocketHandler::WriteBytes(const void* inData, VSize inLength) { int l_tries; uLONG l_len; XBOX::VError l_err; char* l_tmp = (char*)inData; l_err = VE_OK; l_tries = K_NB_MAX_TRIES; if (!fEndpt) { xbox_assert((fEndpt != NULL)); return VE_INVALID_PARAMETER; } while(!l_err && inLength) { l_len = ( inLength > 4096 ? 4096 : (uLONG)inLength ); //DebugMsg("WriteBytes trying to write %d bytes at %x\n",l_len,l_tmp); l_err = fEndpt->Write(l_tmp,&l_len); if (l_err == VE_SRVR_RESOURCE_TEMPORARILY_UNAVAILABLE) { l_tries--; if (!l_tries) { l_err = VE_SRVR_WRITE_FAILED; } else { l_err = VE_OK; VTask::Sleep(100); continue; } } if (!l_err) { l_tries = K_NB_MAX_TRIES; inLength -= l_len; l_tmp += l_len; } else { DebugMsg("WriteBytes ERR=%d tries left%d\n",l_err,l_tries); DebugMsg("ERRCODE_FROM_VERROR=%d\n",ERRCODE_FROM_VERROR(l_err)); } } return l_err; }
void VSysLogOutput::Put( std::vector< const XBOX::VValueBag* >& inValuesVector) { for (std::vector< const XBOX::VValueBag* >::iterator bagIter = inValuesVector.begin() ; bagIter != inValuesVector.end() ; ++bagIter) { EMessageLevel bagLevel = ILoggerBagKeys::level.Get( *bagIter); if ((fFilter & (1 << bagLevel)) != 0) { VString logMsg; VError errorCode = VE_OK; ILoggerBagKeys::error_code.Get( *bagIter, errorCode); VString loggerID; ILoggerBagKeys::source.Get( *bagIter, loggerID); OsType componentSignature = 0; if (!ILoggerBagKeys::component_signature.Get( *bagIter, componentSignature)) componentSignature = COMPONENT_FROM_VERROR( errorCode); if (componentSignature != 0) { if (!loggerID.IsEmpty()) loggerID.AppendUniChar( L'.'); loggerID.AppendOsType( componentSignature); } if (!loggerID.IsEmpty()) logMsg.Printf( "[%S]", &loggerID); // build message string VString message; if (errorCode != VE_OK) message.AppendPrintf( "error %d", ERRCODE_FROM_VERROR( errorCode)); VString bagMsg; if (ILoggerBagKeys::message.Get( *bagIter, bagMsg)) { if (!message.IsEmpty()) message.AppendString( L", "); message.AppendString( bagMsg); } sLONG taskId=-1; if (ILoggerBagKeys::task_id.Get( *bagIter, taskId)) { if (!message.IsEmpty()) message.AppendString( L", "); message.AppendString( L"task #"); message.AppendLong( taskId); } VString taskName; if (!ILoggerBagKeys::task_name.Get( *bagIter, taskName)) VTask::GetCurrent()->GetName( taskName); if (!taskName.IsEmpty()) { if (!message.IsEmpty()) message.AppendString( L", "); message.AppendString( taskName); } sLONG socketDescriptor=-1; if (ILoggerBagKeys::socket.Get( *bagIter, socketDescriptor)) { if (!message.IsEmpty()) message.AppendString( L", "); message.AppendString( L"socket "); message.AppendLong(socketDescriptor); } VString localAddr; if (ILoggerBagKeys::local_addr.Get( *bagIter, localAddr)) { if (!message.IsEmpty()) message.AppendString( L", "); message.AppendString( L"local addr is "); message.AppendString( localAddr); } VString peerAddr; if (ILoggerBagKeys::peer_addr.Get( *bagIter, peerAddr)) { if (!message.IsEmpty()) message.AppendString( L", "); message.AppendString( L"peer addr is "); message.AppendString( peerAddr); } bool exchangeEndPointID=false; if (ILoggerBagKeys::exchange_id.Get( *bagIter, exchangeEndPointID)) { if (!message.IsEmpty()) message.AppendString( L", "); message.AppendString( (exchangeEndPointID) ? L"exchange endpoint id" : L"do not exchange endpoint id"); } bool isBlocking=false; if (ILoggerBagKeys::is_blocking.Get( *bagIter, isBlocking)) { if (!message.IsEmpty()) message.AppendString( L", "); message.AppendString( (isBlocking) ? L"is blocking" : L"is not blocking"); } bool isSSL=false; if (ILoggerBagKeys::is_ssl.Get( *bagIter, isSSL)) { if (!message.IsEmpty()) message.AppendString( L", "); message.AppendString( (isSSL) ? L"with SSL" : L"without SSL"); } bool isSelectIO=false; if (ILoggerBagKeys::is_select_io.Get( *bagIter, isSelectIO)) { if (!message.IsEmpty()) message.AppendString( L", "); message.AppendString( (isSelectIO) ? L"with SelectIO" : L"without SelectIO"); } sLONG ioTimeout=-1; if (ILoggerBagKeys::ms_timeout.Get( *bagIter, ioTimeout)) { if (!message.IsEmpty()) message.AppendString( L", "); message.AppendString( L"with "); message.AppendLong( ioTimeout); message.AppendString( L"ms timeout"); } sLONG askedCount=-1; if (ILoggerBagKeys::count_bytes_asked.Get( *bagIter, askedCount)) { if (!message.IsEmpty()) message.AppendString( L", "); message.AppendString( L"asked for "); message.AppendLong( askedCount); message.AppendString( L" byte(s)"); } sLONG sentCount=-1; if (ILoggerBagKeys::count_bytes_sent.Get(*bagIter, sentCount)) { if (!message.IsEmpty()) message.AppendString( L", "); message.AppendString( L"sent "); message.AppendLong( sentCount); message.AppendString( L" byte(s)"); } sLONG receivedCount=-1; if (ILoggerBagKeys::count_bytes_received.Get( *bagIter, receivedCount)) { if (!message.IsEmpty()) message.AppendString( L", "); message.AppendString( L"received "); message.AppendLong( receivedCount); message.AppendString( L" byte(s)"); } sLONG ioSpent=-1; if (ILoggerBagKeys::ms_spent.Get( *bagIter, ioSpent)) { if (!message.IsEmpty()) message.AppendString( L", "); message.AppendString( L"done in "); message.AppendLong( ioSpent); message.AppendString( L"ms"); } sLONG dumpOffset=-1; if (ILoggerBagKeys::dump_offset.Get( *bagIter, dumpOffset)) { if (!message.IsEmpty()) message.AppendString( L", "); message.AppendString( L"offset "); message.AppendLong( dumpOffset); } VString dumpBuffer; if (ILoggerBagKeys::dump_buffer.Get( *bagIter, dumpBuffer)) { if (!message.IsEmpty()) message.AppendString( L", "); message.AppendString( L"data : "); message.AppendString( dumpBuffer); } VString fileName; if (ILoggerBagKeys::file_name.Get( *bagIter, fileName)) { if (!message.IsEmpty()) message.AppendString( L", "); message.AppendString( fileName); } sLONG lineNumber; if (ILoggerBagKeys::line_number.Get( *bagIter, lineNumber)) { if (!message.IsEmpty()) message.AppendString( L", "); message.AppendLong( lineNumber); } VString stackCrawl; if (ILoggerBagKeys::stack_crawl.Get( *bagIter, stackCrawl)) { if (!message.IsEmpty()) message.AppendString( L", "); message.AppendString( L", {"); stackCrawl.ExchangeAll( L"\n", L" ; "); message.AppendString( stackCrawl); message.AppendUniChar( L'}'); } if (!logMsg.IsEmpty()) logMsg.AppendUniChar( L' '); logMsg.AppendString( message); if (!logMsg.IsEmpty()) { StStringConverter<char> messageConverter( VTC_StdLib_char); switch( bagLevel) { case EML_Dump: case EML_Assert: case EML_Debug: syslog( LOG_DEBUG, messageConverter.ConvertString( logMsg)); break; case EML_Trace: syslog( LOG_NOTICE, messageConverter.ConvertString( logMsg)); break; case EML_Information: syslog( LOG_INFO, messageConverter.ConvertString( logMsg)); break; case EML_Warning: syslog( LOG_WARNING, messageConverter.ConvertString( logMsg)); break; case EML_Error: syslog( LOG_ERR, messageConverter.ConvertString( logMsg)); break; case EML_Fatal: syslog( LOG_CRIT, messageConverter.ConvertString( logMsg)); break; default: assert(false); break; } } } } }