aboutsummaryrefslogtreecommitdiff
path: root/xmpp-vala/src/module/xep/0166_jingle/jingle_structs.vala
diff options
context:
space:
mode:
Diffstat (limited to 'xmpp-vala/src/module/xep/0166_jingle/jingle_structs.vala')
-rw-r--r--xmpp-vala/src/module/xep/0166_jingle/jingle_structs.vala73
1 files changed, 73 insertions, 0 deletions
diff --git a/xmpp-vala/src/module/xep/0166_jingle/jingle_structs.vala b/xmpp-vala/src/module/xep/0166_jingle/jingle_structs.vala
new file mode 100644
index 00000000..0f283e0e
--- /dev/null
+++ b/xmpp-vala/src/module/xep/0166_jingle/jingle_structs.vala
@@ -0,0 +1,73 @@
+using Gee;
+using Xmpp;
+
+namespace Xmpp.Xep.Jingle {
+
+ public errordomain IqError {
+ BAD_REQUEST,
+ NOT_ACCEPTABLE,
+ NOT_IMPLEMENTED,
+ UNSUPPORTED_INFO,
+ OUT_OF_ORDER,
+ RESOURCE_CONSTRAINT,
+ }
+
+ public errordomain Error {
+ GENERAL,
+ BAD_REQUEST,
+ INVALID_PARAMETERS,
+ UNSUPPORTED_TRANSPORT,
+ UNSUPPORTED_SECURITY,
+ NO_SHARED_PROTOCOLS,
+ TRANSPORT_ERROR,
+ }
+
+ public enum Senders {
+ BOTH,
+ INITIATOR,
+ NONE,
+ RESPONDER;
+
+ public string to_string() {
+ switch (this) {
+ case BOTH: return "both";
+ case INITIATOR: return "initiator";
+ case NONE: return "none";
+ case RESPONDER: return "responder";
+ }
+ assert_not_reached();
+ }
+
+ public static Senders parse(string? senders) throws IqError {
+ if (senders == null) return Senders.BOTH;
+ switch (senders) {
+ case "initiator": return Senders.INITIATOR;
+ case "responder": return Senders.RESPONDER;
+ case "both": return Senders.BOTH;
+ }
+ throw new IqError.BAD_REQUEST(@"invalid role $(senders)");
+ }
+ }
+
+ public enum Role {
+ INITIATOR,
+ RESPONDER;
+
+ public string to_string() {
+ switch (this) {
+ case INITIATOR: return "initiator";
+ case RESPONDER: return "responder";
+ }
+ assert_not_reached();
+ }
+
+ public static Role parse(string role) throws IqError {
+ switch (role) {
+ case "initiator": return INITIATOR;
+ case "responder": return RESPONDER;
+ }
+ throw new IqError.BAD_REQUEST(@"invalid role $(role)");
+ }
+ }
+
+} \ No newline at end of file