KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > activemq > kaha > MessageMarshaller


1 /**
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one or more
4  * contributor license agreements. See the NOTICE file distributed with
5  * this work for additional information regarding copyright ownership.
6  * The ASF licenses this file to You under the Apache License, Version 2.0
7  * (the "License"); you may not use this file except in compliance with
8  * the License. You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */

18 package org.apache.activemq.kaha;
19
20 import java.io.DataInput JavaDoc;
21 import java.io.DataOutput JavaDoc;
22 import java.io.IOException JavaDoc;
23 import org.apache.activemq.command.Message;
24 import org.apache.activemq.util.ByteSequence;
25 import org.apache.activemq.wireformat.WireFormat;
26 /**
27  * Implementation of a Marshaller for MessageIds
28  *
29  * @version $Revision: 1.2 $
30  */

31 public class MessageMarshaller implements Marshaller<Message> {
32     
33     private WireFormat wireFormat;
34     /**
35      * Constructor
36      * @param wireFormat
37      */

38     public MessageMarshaller(WireFormat wireFormat) {
39         this.wireFormat=wireFormat;
40     }
41     /**
42      * Write the payload of this entry to the RawContainer
43      *
44      * @param message
45      * @param dataOut
46      * @throws IOException
47      */

48     public void writePayload(Message message,DataOutput JavaDoc dataOut) throws IOException JavaDoc{
49         ByteSequence packet = wireFormat.marshal(message);
50         dataOut.writeInt(packet.length);
51         dataOut.write(packet.data, packet.offset, packet.length);
52     }
53
54     /**
55      * Read the entry from the RawContainer
56      *
57      * @param dataIn
58      * @return unmarshalled object
59      * @throws IOException
60      */

61     public Message readPayload(DataInput JavaDoc dataIn) throws IOException JavaDoc{
62         int size=dataIn.readInt();
63         byte[] data=new byte[size];
64         dataIn.readFully(data);
65         return (Message)wireFormat.unmarshal(new ByteSequence(data));
66     }
67 }
68
Popular Tags