PageRenderTime 12ms CodeModel.GetById 1ms RepoModel.GetById 0ms app.codeStats 0ms

/protocols/smpp/src/main/java/org/mobicents/protocols/smpp/util/SequenceNumberScheme.java

http://mobicents.googlecode.com/
Java | 75 lines | 8 code | 8 blank | 59 comment | 0 complexity | be53f96c581ee8d13ad3f41027cda2fb MD5 | raw file
Possible License(s): LGPL-3.0, GPL-3.0, LGPL-2.1, GPL-2.0, CC-BY-SA-3.0, CC0-1.0, Apache-2.0, BSD-3-Clause
  1. /*
  2. * JBoss, Home of Professional Open Source
  3. * Copyright 2011, Red Hat, Inc. and individual contributors
  4. * by the @authors tag. See the copyright.txt in the distribution for a
  5. * full listing of individual contributors.
  6. *
  7. * This is free software; you can redistribute it and/or modify it
  8. * under the terms of the GNU Lesser General Public License as
  9. * published by the Free Software Foundation; either version 2.1 of
  10. * the License, or (at your option) any later version.
  11. *
  12. * This software is distributed in the hope that it will be useful,
  13. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  15. * Lesser General Public License for more details.
  16. *
  17. * You should have received a copy of the GNU Lesser General Public
  18. * License along with this software; if not, write to the Free
  19. * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
  20. * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
  21. */
  22. package org.mobicents.protocols.smpp.util;
  23. /**
  24. * SMPP packet sequence numbering scheme interface. Implementations of this
  25. * interface provide a {@link org.mobicents.protocols.smpp.Session} with a unique number for
  26. * each call to <code>nextNumber</code>. This number is used as the packet's
  27. * sequence number in the SMPP header. The default implementation (
  28. * {@link DefaultSequenceScheme}) counts monotonically from 1 upwards for each
  29. * number requested. While this is the SMPP specification's recommended
  30. * behaviour, there is no requirement for 2 sequentially-requested numbers to be
  31. * numerically sequential.
  32. *
  33. * @version $Id: SequenceNumberScheme.java 452 2009-01-15 16:56:36Z orank $
  34. */
  35. public interface SequenceNumberScheme {
  36. /**
  37. * Constant that can be returned from the <code>peek</code> methods to
  38. * indicate that the peek operation is not supported.
  39. */
  40. long PEEK_UNSUPPORTED = -1;
  41. /**
  42. * Get the next number in this sequence's scheme. An implementation of this
  43. * interface <b>must </b> guard against multi-threaded access to this method
  44. * to prevent more than one thread getting the same sequence number.
  45. */
  46. long nextNumber();
  47. /**
  48. * Get the next number in this sequence's scheme without causing it to move
  49. * to the next-in-sequence. This method returns the number that will be
  50. * returned by the next call to <code>nextNumber</code> without actually
  51. * increasing the sequence. Multiple calls to <code>peek</code> will
  52. * return the same number until a call to <code>nextNumber</code> is made.
  53. */
  54. long peek();
  55. /**
  56. * Get the nth next number in this sequence's scheme without causing it to
  57. * move to the next-in-sequence. This method returns the <code>nth</code>
  58. * next number in the sequence. This is an optional operation. If a sequence
  59. * numbering scheme does not support this operation, it should always return
  60. * {@link #PEEK_UNSUPPORTED} to the caller.
  61. */
  62. long peek(long nth);
  63. /**
  64. * Reset the sequence scheme to the beginning of the sequence.
  65. */
  66. void reset();
  67. }