예제 #1
0
파일: lmdb_engine.cpp 프로젝트: mrkeng/ardb
 Iterator* LMDBEngine::Find(const Slice& findkey, bool cache)
 {
     MDB_val k, data;
     k.mv_data = const_cast<char*>(findkey.data());
     k.mv_size = findkey.size();
     MDB_cursor *cursor = NULL;
     int rc = 0;
     LMDBContext& holder = m_ctx_local.GetValue();
     if (NULL == holder.readonly_txn)
     {
         rc = mdb_txn_begin(m_env, NULL, MDB_RDONLY, &holder.readonly_txn);
         if (rc != 0)
         {
             ERROR_LOG("Failed to create txn for iterator for reason:%s", mdb_strerror(rc));
             holder.readonly_txn = NULL;
             return NULL;
         }
     }
     holder.readonly_txn_ref++;
     rc = mdb_cursor_open(holder.readonly_txn, m_dbi, &cursor);
     if (0 != rc)
     {
         ERROR_LOG("Failed to create cursor for reason:%s", mdb_strerror(rc));
         CloseTransaction();
         return NULL;
     }
     rc = mdb_cursor_get(cursor, &k, &data, MDB_SET_RANGE);
     LMDBIterator* iter = new LMDBIterator(this, cursor, rc == 0);
     return iter;
 }
void CHttpController::Cancel()
	{
	if ( iState > EHttpFinished )
		{
		iState = EHttpFinished;
		}
	else
		{
		if ( iState == EHttpActive )
			{
			CloseTransaction( iTransaction );
			}
		}
	}
예제 #3
0
NS_IMETHODIMP
nsHttpConnection::OnOutputStreamReady(nsIAsyncOutputStream *out)
{
    NS_ASSERTION(out == mSocketOut, "unexpected stream");
    NS_ASSERTION(PR_GetCurrentThread() == gSocketThread, "wrong thread");

    // if the transaction was dropped...
    if (!mTransaction) {
        LOG(("  no transaction; ignoring event\n"));
        return NS_OK;
    }

    nsresult rv = OnSocketWritable();
    if (NS_FAILED(rv))
        CloseTransaction(mTransaction, rv);

    return NS_OK;
}
예제 #4
0
void CTestTransaction::MHFRunL(RHTTPTransaction aTransaction, const THTTPEvent& aEvent)
{
	//	log the event code 
	THTTPEvent	receivedError = aEvent;

	Machine()->SetErrorDefine(iTransactionName, receivedError.iStatus);

	if (aEvent.iStatus < 0)
		{
		WriteDateStamp();

		switch (aEvent.iStatus)
			{
			case KErrEtelNoAnswer : 
				Log(_L("CCmdTransaction::MHFRunL(%S) - No Answer! Has the RAS or Internet Connection been enabled???"), &iTransactionName); 
				break;
			case -3606 : 
				Log(_L("CCmdTransaction::MHFRunL(%S) - Not able to make connection due to invalid or undefined COMMSDB configuration"), &iTransactionName); 
				break;
			case KErrHttpGeneralHeaderMissingHost : 
				Log(_L("CCmdTransaction::MHFRunL(%S) - General Header missing host information"), &iTransactionName); 
				break;
			case KErrHttpCantResetRequestBody : 
				Log(_L("CCmdTransaction::MHFRunL(%S) - Cannot reset request body. Redirect received"), &iTransactionName); 
				break;
			case KErrHttpInvalidHeaderInRequest : 
				Log(_L("CCmdTransaction::MHFRunL(%S) - Invalid Header in Request"), &iTransactionName); 
				break;
			case KErrHttpEncodeUserAgent : 
				Log(_L("CCmdTransaction::MHFRunL(%S) - Invalid Encode User Agent Header in Request"), &iTransactionName); 
				break;
			default : 
				Log(_L("CCmdTransaction::MHFRunL(%S) - The error [%d] was unexpected"), &iTransactionName, aEvent.iStatus); 
				break;
			}
			
		return;
		}

	
	TInt statusCode = aTransaction.Response().StatusCode();

	WriteDateStamp();

	Log(_L("CCmdTransaction::MHFRunL( %S: Event Status Code: %d"), &iTransactionName, statusCode);

	Machine()->SetResultDefine(iTransactionName, statusCode);

	switch (aEvent.iStatus)
		{
		// The transaction's response is complete
		case THTTPEvent::EResponseComplete:
			Log(_L("(%S)  : EResponseComplete received (Event Status: %d)"),&iTransactionName, aEvent.iStatus);
			break;

		//	transaction completed (and successful)
		case THTTPEvent::ESucceeded:
			Log(_L("(%S)  : ESucceeded received from the VF (Event Status: %d)"), &iTransactionName, aEvent.iStatus);
			CloseTransaction();
			break;

		//	transaction completed (and successful)
		case THTTPEvent::EFailed:
			Log(_L("(%S)  : Transaction EFailed received (Event Status: %d)"), &iTransactionName, aEvent.iStatus);
			CloseTransaction();
			//Validate(aTransaction);
			break;

		case THTTPEvent::EGotResponseHeaders:
			{
			// HTTP response headers have been received
			Log(_L("(%S)  : EGotResponseHeaders (%d)"),&iTransactionName, aEvent.iStatus);
			
			//TInt statusCode = aTransaction.Response().StatusCode();
			//Log(_L("Status Code: %d "), statusCode);
			//SetCompletionCode(statusCode);
			DumpRespHeaders(aTransaction);
			}
			break;

		case THTTPEvent::EGotResponseBodyData:
			{
			// Some (more) body data has been received (in the HTTP response)
			Log(_L("(%S)  : EGotResponseBodyData received (Event Status: %d"), &iTransactionName, aEvent.iStatus);

			// for each chunk of data received we have to empty the buffer before to be able to receive 
			MHTTPDataSupplier *body = aTransaction.Response().Body();
			body->ReleaseData();
			} 
			break;

		case KErrHttpRequestHasBody:
			Log(_L("(%S)  : KErrHttpRequestHasBody received from the VF (Event Status: %d)"), &iTransactionName, aEvent.iStatus);
			break;

		case KErrHttpEntityHeaderMissingContentType:
			Log(_L("(%S)  : KErrHttpEntityHeaderMissingContentType received from the VF (Event Status: %d)"), &iTransactionName, aEvent.iStatus);
			break;

		case KErrHttpRequestBodyMissing:
			Log(_L("(%S)  : KErrHttpRequestBodyMissing  received from the VF (Event Status: %d)"), &iTransactionName, aEvent.iStatus);
			break;

		case KErrTimedOut:							//-33
			Log(_L("(%S)  : KErrTimedOut  received from the VF (Event Status: %d)"), &iTransactionName, aEvent.iStatus);
			break;

		case KErrHttpRedirectExceededLimit:			
			Log(_L("(%S)  : KErrHttpRedirectExceededLimit received (Event Status: %d)"), &iTransactionName, aEvent.iStatus);
			break;

		case KErrHttpRedirectNoLocationField:	
			Log(_L("(%S)  : KErrHttpRedirectNoLocationField received (Event Status: %d)"), &iTransactionName, aEvent.iStatus);
			break;

		default:
			Log(_L("(%S)  : unrecognised event> (Event Status: %d)"), &iTransactionName, aEvent.iStatus);
			if (aEvent.iStatus < THTTPEvent::ERedirectedPermanently)
				{
				Log(_L("Test Failed: The event received was not expected and it's not just a warning"));
				}
			break;
	}

	if (receivedError == THTTPEvent::EResponseComplete)
		{
		Log(_L("CCmdTransaction::MHFRunL (%S) receivedError == EResponseComplete"), &iTransactionName);
		}
	else if (receivedError == THTTPEvent::ESucceeded)
		{
		Log(_L("CCmdTransaction::MHFRunL (%S) : receivedError == ESucceeded"), &iTransactionName);
//		Machine()->Domains()->Delete(transNameValueBuf);
		DoneWaitEvents();
		}
	else if (receivedError == THTTPEvent::EFailed)
		{
//		Machine()->Domains()->Delete(transNameValueBuf);
		DoneWaitEvents();
		}
	else 
		{
//			Log(_L("CCmdTransaction::MHFRunL : (%S) iTestFail is TRUE"), &transNameValueBuf);
		DoneWaitEvents();
		}
}
void CHttpController::Error( RHTTPTransaction& aTransaction, TInt aError )
	{
	CloseTransaction( aTransaction );
	iObserver->Error( aError );
	iState = EHttpNotified;
	}
TInt CHttpController::MHFRunError( TInt aError, RHTTPTransaction aTransaction, const THTTPEvent& /*aEvent*/)
	{
	CloseTransaction( aTransaction );
	Error( aError );
	return KErrNone;
	}