Refactory

Replace pendingReceiveTaskSource  with ReceiveRequest class

combine pendingReceiveTaskSource and pendingReceiveBuffer into
ReceiveRequest class since they need to be in sync