001/* 002 * jPOS Project [http://jpos.org] 003 * Copyright (C) 2000-2026 jPOS Software SRL 004 * 005 * This program is free software: you can redistribute it and/or modify 006 * it under the terms of the GNU Affero General Public License as 007 * published by the Free Software Foundation, either version 3 of the 008 * License, or (at your option) any later version. 009 * 010 * This program is distributed in the hope that it will be useful, 011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 013 * GNU Affero General Public License for more details. 014 * 015 * You should have received a copy of the GNU Affero General Public License 016 * along with this program. If not, see <http://www.gnu.org/licenses/>. 017 */ 018 019package org.jpos.iso; 020 021import java.io.Serializable; 022 023/** 024 * @author Eoin.Flood@orbiscom.com 025 */ 026 027public interface ISOHeader extends Cloneable,Serializable 028{ 029 /** 030 * Return this header as byte array. 031 */ 032 byte[] pack(); 033 034 /** 035 * Create a new ISOHeader from a byte array. 036 * 037 * @return The Number of bytes consumed. 038 */ 039 int unpack(byte[] b); 040 041 /** 042 * Set the Destination address in this ISOHeader. 043 */ 044 void setDestination(String dst); 045 046 /** 047 * Return the destination address in this ISOHeader. 048 * returns null if there is no destination address 049 */ 050 String getDestination(); 051 052 /** 053 * Set the Source address in this ISOHeader. 054 */ 055 void setSource(String src); 056 057 /** 058 * Return the source address in this ISOHeader. 059 * returns null if there is no source address 060 */ 061 String getSource(); 062 063 /** 064 * return the number of bytes in this ISOHeader 065 */ 066 int getLength(); 067 068 /** 069 * Swap the source and destination addresses in this ISOHeader 070 * (if they exist). 071 */ 072 void swapDirection(); 073 074 /** 075 * Allow object to be cloned. 076 */ 077 Object clone(); 078} 079