// UDT Message Number: 0 - (2^29 - 1) using System; namespace UdtSharp { static class MessageNumber { public static int msgcmp(int msgno1, int msgno2) { return (Math.Abs(msgno1 - msgno2) < m_iMsgNoTH) ? (msgno1 - msgno2) : (msgno2 - msgno1); } public static int msglen(int msgno1, int msgno2) { return (msgno1 <= msgno2) ? (msgno2 - msgno1 + 1) : (msgno2 - msgno1 + m_iMaxMsgNo + 2); } public static int msgoff(int msgno1, int msgno2) { if (Math.Abs(msgno1 - msgno2) < m_iMsgNoTH) return msgno2 - msgno1; if (msgno1 < msgno2) return msgno2 - msgno1 - m_iMaxMsgNo - 1; return msgno2 - msgno1 + m_iMaxMsgNo + 1; } public static int incmsg(int msgno) { return (msgno == m_iMaxMsgNo) ? 0 : msgno + 1; } static int m_iMsgNoTH = 0xFFFFFFF; // threshold for comparing msg. no. public static int m_iMaxMsgNo = 0x1FFFFFFF; // maximum message number used in UDT } }