question: private boolean processTransaction ( Transaction transaction ) throws IOException { synchronized ( mProcessing ) { for ( Transaction t : mPending ) { if ( t . isEquivalent ( transaction ) ) { if ( LOCAL_LOGV ) Log . v ( TAG , "Transaction already pending: " + transaction . getServiceId ( ) ) ; return true ; } } for ( Transaction t : mProcessing ) { if ( t . isEquivalent ( transaction ) ) { if ( LOCAL_LOGV ) Log . v ( TAG , "Duplicated transaction: " + transaction . getServiceId ( ) ) ; return true ; } } if ( LOCAL_LOGV ) Log . v ( TAG , "processTransaction: call beginMmsConnectivity..." ) ; int connectivityResult = beginMmsConnectivity ( ) ; if ( connectivityResult == PhoneConstants . APN_REQUEST_STARTED ) { mPending . add ( transaction ) ; if ( LOCAL_LOGV ) Log . v ( TAG , "processTransaction: connResult=APN_REQUEST_STARTED, " + "defer transaction pending MMS connectivity" ) ; return true ; } if ( LOCAL_LOGV ) Log . v ( TAG , "Adding transaction to 'mProcessing' list: " + transaction ) ; mProcessing . add ( transaction ) ; } sendMessageDelayed ( obtainMessage ( EVENT_CONTINUE_MMS_CONNECTIVITY ) , APN_EXTENSION_WAIT ) ; if ( LOCAL_LOGV ) Log . v ( TAG , "processTransaction: starting transaction " + transaction ) ; transaction . attach ( TransactionService . this ) ; transaction . process ( ) ; return true ; }
target:  Internal method to begin processing a transaction.