blob: 1b173c7e11a2c6902196a4fbfdcffe43b43cb0ee [file] [log] [blame]
/*
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*/
package org.apache.qpid.qmf;
import java.util.Collection;
import java.util.Collections;
import org.apache.commons.lang.NotImplementedException;
import org.apache.qpid.framing.AMQShortString;
import org.apache.qpid.server.configuration.SessionConfig;
import org.apache.qpid.server.message.AMQMessageHeader;
import org.apache.qpid.server.message.InboundMessage;
import org.apache.qpid.server.message.MessageReference;
import org.apache.qpid.server.message.ServerMessage;
import org.apache.qpid.server.store.StoredMessage;
import org.apache.qpid.transport.codec.BBEncoder;
import java.nio.ByteBuffer;
import java.util.Set;
public class QMFMessage implements ServerMessage, InboundMessage, AMQMessageHeader
{
private ByteBuffer _content;
private String _routingKey;
public QMFMessage(String routingKey, QMFCommand command)
{
this(routingKey, new QMFCommand[] { command });
}
public QMFMessage(String routingKey, QMFCommand[] commands)
{
_routingKey = routingKey;
BBEncoder encoder = new BBEncoder(256);
for(QMFCommand cmd : commands)
{
cmd.encode(encoder);
}
_content = encoder.buffer();
}
public String getRoutingKey()
{
return _routingKey;
}
public AMQShortString getRoutingKeyShortString()
{
return AMQShortString.valueOf(_routingKey);
}
public AMQMessageHeader getMessageHeader()
{
return this;
}
public StoredMessage getStoredMessage()
{
throw new NotImplementedException();
}
public boolean isPersistent()
{
return false;
}
public boolean isRedelivered()
{
return false;
}
public long getSize()
{
return _content.limit();
}
public boolean isImmediate()
{
return false;
}
public String getCorrelationId()
{
return null;
}
public long getExpiration()
{
return 0;
}
public String getUserId()
{
return null;
}
public String getAppId()
{
return null;
}
public String getMessageId()
{
return null;
}
public String getMimeType()
{
return null;
}
public String getEncoding()
{
return null;
}
public byte getPriority()
{
return 4;
}
public long getTimestamp()
{
return 0;
}
public String getType()
{
return null;
}
public String getReplyTo()
{
return null;
}
public String getReplyToExchange()
{
return null;
}
public String getReplyToRoutingKey()
{
return null;
}
public Object getHeader(String name)
{
return null;
}
public boolean containsHeaders(Set<String> names)
{
return false;
}
@Override
public Collection<String> getHeaderNames()
{
return Collections.EMPTY_SET;
}
public boolean containsHeader(String name)
{
return false;
}
public MessageReference newReference()
{
return new QMFMessageReference(this);
}
public long getMessageNumber()
{
return 0l;
}
public long getArrivalTime()
{
return 0;
}
public int getContent(ByteBuffer buf, int offset)
{
ByteBuffer src = _content.duplicate();
src.position(offset);
src = src.slice();
int len = src.remaining();
if(len > buf.remaining())
{
len = buf.remaining();
}
buf.put(src);
return len;
}
public ByteBuffer getContent(int offset, int size)
{
ByteBuffer src = _content.duplicate();
src.position(offset);
src = src.slice();
src.limit(size);
return src;
}
private static class QMFMessageReference extends MessageReference<QMFMessage>
{
public QMFMessageReference(QMFMessage message)
{
super(message);
}
protected void onReference(QMFMessage message)
{
}
protected void onRelease(QMFMessage message)
{
}
}
public SessionConfig getSessionConfig()
{
return null;
}
}