aboutsummaryrefslogtreecommitdiffstats
path: root/src/com/vaadin/terminal/gwt/server/ClientMethodInvocation.java
diff options
context:
space:
mode:
authorHenri Sara <hesara@vaadin.com>2012-02-29 17:16:00 +0200
committerHenri Sara <hesara@vaadin.com>2012-02-29 17:16:18 +0200
commit121b1dae346d60896205c4db5bc0c0db0c504a41 (patch)
tree974fd116dd151b16c0fadbfd6c0827eb02bb3bf5 /src/com/vaadin/terminal/gwt/server/ClientMethodInvocation.java
parentf1061c43764d81c17bdac919dcc8b1ec16b8ed94 (diff)
downloadvaadin-framework-121b1dae346d60896205c4db5bc0c0db0c504a41.tar.gz
vaadin-framework-121b1dae346d60896205c4db5bc0c0db0c504a41.zip
Implement server to client RPC (#8426).
Diffstat (limited to 'src/com/vaadin/terminal/gwt/server/ClientMethodInvocation.java')
-rw-r--r--src/com/vaadin/terminal/gwt/server/ClientMethodInvocation.java64
1 files changed, 64 insertions, 0 deletions
diff --git a/src/com/vaadin/terminal/gwt/server/ClientMethodInvocation.java b/src/com/vaadin/terminal/gwt/server/ClientMethodInvocation.java
new file mode 100644
index 0000000000..8133a617ca
--- /dev/null
+++ b/src/com/vaadin/terminal/gwt/server/ClientMethodInvocation.java
@@ -0,0 +1,64 @@
+/*
+@VaadinApache2LicenseForJavaFiles@
+ */
+
+package com.vaadin.terminal.gwt.server;
+
+import java.io.Serializable;
+
+import com.vaadin.terminal.Paintable;
+
+/**
+ * Internal class for keeping track of pending server to client method
+ * invocations for a Paintable.
+ *
+ * @since 7.0
+ */
+public class ClientMethodInvocation implements Serializable,
+ Comparable<ClientMethodInvocation> {
+ private final Paintable paintable;
+ private final String interfaceName;
+ private final String methodName;
+ private final Object[] parameters;
+
+ // used for sorting calls between different Paintables in the same Root
+ private final long sequenceNumber;
+ // TODO may cause problems when clustering etc.
+ private static long counter = 0;
+
+ public ClientMethodInvocation(Paintable paintable, String interfaceName,
+ String methodName, Object[] parameters) {
+ this.paintable = paintable;
+ this.interfaceName = interfaceName;
+ this.methodName = methodName;
+ this.parameters = (null != parameters) ? parameters : new Object[0];
+ sequenceNumber = ++counter;
+ }
+
+ public Paintable getPaintable() {
+ return paintable;
+ }
+
+ public String getInterfaceName() {
+ return interfaceName;
+ }
+
+ public String getMethodName() {
+ return methodName;
+ }
+
+ public Object[] getParameters() {
+ return parameters;
+ }
+
+ protected long getSequenceNumber() {
+ return sequenceNumber;
+ }
+
+ public int compareTo(ClientMethodInvocation o) {
+ if (null == o) {
+ return 0;
+ }
+ return Long.signum(getSequenceNumber() - o.getSequenceNumber());
+ }
+} \ No newline at end of file