001 /* 002 * Copyright (c) 2005 Your Corporation. All Rights Reserved. 003 */ 004 package org.activemq.transport.stomp; 005 006 import org.activemq.message.TransactionInfo; 007 import org.activemq.message.KeepAlive; 008 import org.activemq.message.TransactionType; 009 010 import java.io.DataInput; 011 import java.io.IOException; 012 import java.util.Properties; 013 014 public class Begin implements Command 015 { 016 private StompWireFormat format; 017 private static final HeaderParser parser = new HeaderParser(); 018 019 public Begin(StompWireFormat format) 020 { 021 this.format = format; 022 } 023 024 public PacketEnvelope build(String commandLine, DataInput in) throws IOException 025 { 026 Properties headers = parser.parse(in); 027 while (in.readByte() != 0) {} 028 029 if (format.isInTransaction()) 030 { 031 return new PacketEnvelope(new KeepAlive(), headers); 032 } 033 TransactionInfo tx = new TransactionInfo(); 034 String tx_id = StompWireFormat.clientIds.generateId(); 035 format.setTransactionId(tx_id); 036 tx.setTransactionId(tx_id); 037 tx.setType(TransactionType.START); 038 return new PacketEnvelope(tx, headers); 039 } 040 }