summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Smith <git@kismith.co.uk>2011-07-01 09:19:49 (GMT)
committerKevin Smith <git@kismith.co.uk>2011-07-01 09:19:49 (GMT)
commit2da71a8a85486a494343f1662d64fb5ae5a2a44e (patch)
tree23992f9f2a00bac23b345e5c2cc9c1194efc25be /src/com/isode/stroke/session/SessionStream.java
downloadstroke-2da71a8a85486a494343f1662d64fb5ae5a2a44e.zip
stroke-2da71a8a85486a494343f1662d64fb5ae5a2a44e.tar.bz2
Initial import
Diffstat (limited to 'src/com/isode/stroke/session/SessionStream.java')
-rw-r--r--src/com/isode/stroke/session/SessionStream.java88
1 files changed, 88 insertions, 0 deletions
diff --git a/src/com/isode/stroke/session/SessionStream.java b/src/com/isode/stroke/session/SessionStream.java
new file mode 100644
index 0000000..c70622b
--- /dev/null
+++ b/src/com/isode/stroke/session/SessionStream.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright (c) 2010 Remko Tron¨on
+ * Licensed under the GNU General Public License v3.
+ * See Documentation/Licenses/GPLv3.txt for more information.
+ */
+/*
+ * Copyright (c) 2010-2011, Isode Limited, London, England.
+ * All rights reserved.
+ */
+package com.isode.stroke.session;
+
+import com.isode.stroke.base.ByteArray;
+import com.isode.stroke.elements.Element;
+import com.isode.stroke.elements.ProtocolHeader;
+import com.isode.stroke.signals.Signal;
+import com.isode.stroke.signals.Signal1;
+import com.isode.stroke.tls.Certificate;
+import com.isode.stroke.tls.CertificateVerificationError;
+import com.isode.stroke.tls.PKCS12Certificate;
+
+public abstract class SessionStream {
+
+ public static class Error implements com.isode.stroke.base.Error {
+
+ public enum Type {
+
+ ParseError,
+ TLSError,
+ InvalidTLSCertificateError,
+ ConnectionReadError,
+ ConnectionWriteError
+ };
+
+ public Error(Type type) {
+ this.type = type;
+ }
+ public final Type type;
+ };
+
+ public abstract void close();
+
+ public abstract boolean isOpen();
+
+ public abstract void writeHeader(ProtocolHeader header);
+
+ public abstract void writeFooter();
+
+ public abstract void writeElement(Element element);
+
+ public abstract void writeData(String data);
+
+ public abstract void addZLibCompression();
+
+ public abstract boolean supportsTLSEncryption();
+
+ public abstract void addTLSEncryption();
+
+ public abstract boolean isTLSEncrypted();
+
+ public abstract void setWhitespacePingEnabled(boolean enabled);
+
+ public abstract void resetXMPPParser();
+
+ public void setTLSCertificate(PKCS12Certificate cert) {
+ certificate = cert;
+ }
+
+ public boolean hasTLSCertificate() {
+ return certificate != null && !certificate.isNull();
+ }
+
+ public abstract Certificate getPeerCertificate();
+
+ public abstract CertificateVerificationError getPeerCertificateVerificationError();
+
+ public abstract ByteArray getTLSFinishMessage();
+
+ public final Signal1<ProtocolHeader> onStreamStartReceived = new Signal1<ProtocolHeader>();
+ public final Signal1<Element> onElementReceived = new Signal1<Element>();
+ public final Signal1<Error> onClosed = new Signal1<Error>();
+ public final Signal onTLSEncrypted = new Signal();
+ public final Signal1<String> onDataRead = new Signal1<String>();
+ public final Signal1<String> onDataWritten = new Signal1<String>();
+ protected PKCS12Certificate getTLSCertificate() {
+ return certificate;
+ }
+ private PKCS12Certificate certificate;
+}