in proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportImpl.java [949:999]
private void processBegin()
{
if(_connectionEndpoint != null && _isOpenSent && !_isCloseSent)
{
EndpointImpl endpoint = _connectionEndpoint.getTransportHead();
while(endpoint != null)
{
if(endpoint instanceof SessionImpl)
{
SessionImpl session = (SessionImpl) endpoint;
TransportSession transportSession = getTransportState(session);
if(session.getLocalState() != EndpointState.UNINITIALIZED && !transportSession.beginSent())
{
int channelId = allocateLocalChannel(transportSession);
Begin begin = new Begin();
if(session.getRemoteState() != EndpointState.UNINITIALIZED)
{
begin.setRemoteChannel(UnsignedShort.valueOf((short) transportSession.getRemoteChannel()));
}
transportSession.updateIncomingWindow();
begin.setHandleMax(transportSession.getHandleMax());
begin.setIncomingWindow(transportSession.getIncomingWindowSize());
begin.setOutgoingWindow(transportSession.getOutgoingWindowSize());
begin.setNextOutgoingId(transportSession.getNextOutgoingId());
if(session.getProperties() != null)
{
begin.setProperties(session.getProperties());
}
if(session.getOfferedCapabilities() != null)
{
begin.setOfferedCapabilities(session.getOfferedCapabilities());
}
if(session.getDesiredCapabilities() != null)
{
begin.setDesiredCapabilities(session.getDesiredCapabilities());
}
writeFrame(channelId, begin, null, null);
transportSession.sentBegin();
}
}
endpoint = endpoint.transportNext();
}
}
}