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.IOException; 022import java.io.InputStream; 023 024/** 025 * @author apr 026 * @version $Id$ 027 * @see ISOComponent 028 */ 029public interface ISOPackager { 030 /** 031 * @param m the Component to pack 032 * @return Message image 033 * @exception ISOException on error 034 */ 035 byte[] pack(ISOComponent m) throws ISOException; 036 037 /** 038 * @param m the Container of this message 039 * @param b ISO message image 040 * @return consumed bytes 041 * @exception ISOException on error 042 */ 043 int unpack(ISOComponent m, byte[] b) throws ISOException; 044 045 void unpack(ISOComponent m, InputStream in) throws IOException, ISOException; 046 047 /** 048 * @return Packager's Description 049 */ 050 String getDescription(); 051 052 /** 053 * @param m the Container (i.e. an ISOMsg) 054 * @param fldNumber the Field Number 055 * @return Field Description 056 */ 057 String getFieldDescription(ISOComponent m, int fldNumber); 058 059 /** 060 * @return an ISOMsg 061 */ 062 ISOMsg createISOMsg(); 063} 064