func (mexset *messageExchangeSet) forwardPeerFrame(frame *Frame) error {
	if mexset.log.Enabled(LogLevelDebug) {
		mexset.log.Debugf("forwarding %s %s", mexset.name, frame.Header)
	}

	mexset.RLock()
	mex := mexset.exchanges[frame.Header.ID]
	mexset.RUnlock()

	if mex == nil {
		// This is ok since the exchange might have expired or been cancelled
		mexset.log.WithFields(
			LogField{"frameHeader", frame.Header.String()},
			LogField{"exchange", mexset.name},
		).Info("Received frame for unknown message exchange.")
		return nil
	}

	if err := mex.forwardPeerFrame(frame); err != nil {
		mexset.log.WithFields(
			LogField{"frameHeader", frame.Header.String()},
			LogField{"frameSize", frame.Header.FrameSize()},
			LogField{"exchange", mexset.name},
			ErrField(err),
		).Info("Failed to forward frame.")
		return err
	}

	return nil
}
func (mexset *messageExchangeSet) forwardPeerFrame(frame *Frame) error {
	if mexset.log.Enabled(LogLevelDebug) {
		mexset.log.Debugf("forwarding %s %s", mexset.name, frame.Header)
	}

	mexset.RLock()
	mex := mexset.exchanges[frame.Header.ID]
	mexset.RUnlock()

	if mex == nil {
		
		mexset.log.WithFields(
			LogField{"frameHeader", frame.Header.String()},
			LogField{"exchange", mexset.name},
		).Info("Received frame for unknown message exchange.")
		return nil
	}

	if err := mex.forwardPeerFrame(frame); err != nil {
		mexset.log.WithFields(
			LogField{"frameHeader", frame.Header.String()},
			LogField{"frameSize", frame.Header.FrameSize()},
			LogField{"exchange", mexset.name},
			ErrField(err),
		).Info("Failed to forward frame.")
		return err
	}

	return nil
}
func ( mexset * messageExchangeSet ) forwardPeerFrame ( frame * Frame ) error { if mexset . log . Enabled ( LogLevelDebug ) { mexset . log . Debugf ( " " , mexset . name , frame . Header ) } mexset . RLock ( ) mex := mexset . exchanges [ frame . Header . ID ] mexset . RUnlock ( ) if mex == nil { // This is ok since the exchange might have expired or been cancelled mexset . log . WithFields ( LogField { " " , frame . Header . String ( ) } , LogField { " " , mexset . name } , ) . Info ( " " ) return nil } if err := mex . forwardPeerFrame ( frame ) ; err != nil { mexset . log . WithFields ( LogField { " " , frame . Header . String ( ) } , LogField { " " , frame . Header . FrameSize ( ) } , LogField { " " , mexset . name } , ErrField ( err ) , ) . Info ( " " ) return err } return nil }
// forwardPeerFrame forwards a frame from the peer to the appropriate message
// exchange
forwardPeerFrame forwards a frame from the peer to the appropriate message exchange