/*
* JBoss, Home of Professional Open Source
* Copyright 2005-2008, Red Hat Middleware LLC, and individual contributors
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.jboss.messaging.core.remoting.impl.wireformat;
import org.jboss.messaging.core.remoting.spi.MessagingBuffer;
/**
* @author <a href="mailto:tim.fox@jboss.com">Tim Fox</a>
* @author <a href="mailto:jmesnil@redhat.com">Jeff Mesnil</a>.
*
* @version <tt>$Revision$</tt>
*/
public class CreateSessionMessage extends PacketImpl
{
// Constants -----------------------------------------------------
// Attributes ----------------------------------------------------
private String name;
private long sessionChannelID;
private int version;
private String username;
private String password;
private boolean xa;
private boolean autoCommitSends;
private boolean autoCommitAcks;
// Static --------------------------------------------------------
// Constructors --------------------------------------------------
public CreateSessionMessage(final String name, final long sessionChannelID,
final int version, final String username, final String password,
final boolean xa, final boolean autoCommitSends,
final boolean autoCommitAcks)
{
super(CREATESESSION);
this.name = name;
this.sessionChannelID = sessionChannelID;
this.version = version;
this.username = username;
this.password = password;
this.xa = xa;
this.autoCommitSends = autoCommitSends;
this.autoCommitAcks = autoCommitAcks;
}
public CreateSessionMessage()
{
super(CREATESESSION);
}
// Public --------------------------------------------------------
public String getName()
{
return name;
}
public long getSessionChannelID()
{
return sessionChannelID;
}
public int getVersion()
{
return version;
}
public String getUsername()
{
return username;
}
public String getPassword()
{
return password;
}
public boolean isXA()
{
return xa;
}
public boolean isAutoCommitSends()
{
return this.autoCommitSends;
}
public boolean isAutoCommitAcks()
{
return this.autoCommitAcks;
}
public void encodeBody(final MessagingBuffer buffer)
{
buffer.putString(name);
buffer.putLong(sessionChannelID);
buffer.putInt(version);
buffer.putNullableString(username);
buffer.putNullableString(password);
buffer.putBoolean(xa);
buffer.putBoolean(autoCommitSends);
buffer.putBoolean(autoCommitAcks);
}
public void decodeBody(final MessagingBuffer buffer)
{
name = buffer.getString();
sessionChannelID = buffer.getLong();
version = buffer.getInt();
username = buffer.getNullableString();
password = buffer.getNullableString();
xa = buffer.getBoolean();
autoCommitSends = buffer.getBoolean();
autoCommitAcks = buffer.getBoolean();
}
public boolean equals(Object other)
{
if (other instanceof CreateSessionMessage == false)
{
return false;
}
CreateSessionMessage r = (CreateSessionMessage)other;
boolean matches = super.equals(other) &&
this.name.equals(r.name) &&
this.sessionChannelID == r.sessionChannelID &&
this.version == r.version &&
this.xa == r.xa &&
this.autoCommitSends == r.autoCommitSends &&
this.autoCommitAcks == r.autoCommitAcks &&
(this.username == null ? r.username == null : this.username.equals(r.username)) &&
(this.password == null ? r.password == null : this.password.equals(r.password));
return matches;
}
public final boolean isRequiresConfirmations()
{
return false;
}
// Package protected ---------------------------------------------
// Protected -----------------------------------------------------
// Private -------------------------------------------------------
// Inner classes -------------------------------------------------
}