/* * CDDL HEADER START * * The contents of this file are subject to the terms of the Common Development * and Distribution License (the "License"). * You may not use this file except in compliance with the License. * * You can obtain a copy of the license at * src/com/vodafone360/people/VODAFONE.LICENSE.txt or * http://github.com/360/360-Engine-for-Android * See the License for the specific language governing permissions and * limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each file and * include the License file at src/com/vodafone360/people/VODAFONE.LICENSE.txt. * If applicable, add the following below this CDDL HEADER, with the fields * enclosed by brackets "[]" replaced with your own identifying information: * Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END * * Copyright 2010 Vodafone Sales & Services Ltd. All rights reserved. * Use is subject to license terms. */ package com.vodafone360.people.service.io.rpg; /** * Representation of an RPG message (RPG header + message body if one exists). */ public class RpgMessage { private RpgHeader mHeader; private byte[] mBody = null; private static final int RPG_HEADER_LENGTH = 16; /** * Constructor creating RPG message with suppled RpgHeader. * * @param header RPG header for this message. */ RpgMessage(RpgHeader header) { mHeader = header; } /** * Constructor creating RPG message with suppled RpgHeader and message body. * * @param header RPG header for this message. * @param body byte array containing message body. */ RpgMessage(RpgHeader header, byte[] body) { mHeader = header; mBody = body; } /** * Return the RPG header for this message. * * @return Message's RPG header */ public RpgHeader header() { return mHeader; } /** * Return message body as byte array * * @return byte[] containing message body. */ public byte[] body() { return mBody; } /** * Create RPG message from supplied data * * @param payload Message body - Hessian encoded. * @param type RPG message type. * @param requestId Request ID. * @return byte array containing RPG message. */ public static byte[] createRpgMessage(byte[] payload, int type, int requestId) { RpgHeader rpgHdr = new RpgHeader(); rpgHdr.setReqType(type); rpgHdr.setReqId(requestId); rpgHdr.setPayloadLength(payload.length); rpgHdr.setCompression(false); int rpgMsgLen = RPG_HEADER_LENGTH + payload.length; byte[] rpgMsg = new byte[rpgMsgLen]; System.arraycopy(rpgHdr.createHeader(), 0, rpgMsg, 0, RPG_HEADER_LENGTH); System.arraycopy(payload, 0, rpgMsg, RPG_HEADER_LENGTH, payload.length); return rpgMsg; } }