summaryrefslogtreecommitdiff
path: root/src/main/java/net/transit/network/swap/IProvider.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/net/transit/network/swap/IProvider.java')
-rw-r--r--src/main/java/net/transit/network/swap/IProvider.java37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/main/java/net/transit/network/swap/IProvider.java b/src/main/java/net/transit/network/swap/IProvider.java
new file mode 100644
index 0000000..03c9ca9
--- /dev/null
+++ b/src/main/java/net/transit/network/swap/IProvider.java
@@ -0,0 +1,37 @@
+package net.transit.network.swap;
+
+import net.transit.network.packet.IPacket;
+
+/**
+ * @author Kyle Gunger
+ *
+ * @param <T> The type of data provided (in IPacket<<T>> form)
+ */
+public interface IProvider<T>
+{
+ /**
+ * @return <b>True</b> if the provider can provide a packet.
+ */
+ public boolean canProvide();
+
+ /**Get the next packet from the provider
+ *
+ * @return IPacket<<T>>
+ */
+ public IPacket<T> provide();
+
+ /**Retain the packet if the acceptor did not accept the packet.
+ *
+ * @param rejected The rejected packet
+ */
+ public void retain(IPacket<T> rejected);
+
+ /**
+ * @return <b>True</b> if the acceptor has a provider assigned to it
+ */
+ public boolean hasAcceptor();
+
+ /**Set the acceptor of the provider. The provider can decide if it wants to adopt the acceptor.
+ */
+ public void setAcceptor();
+} \ No newline at end of file