// ------------------------------------------------------------------------------ // // This code was generated by a tool. // Mono Runtime Version: 4.0.30319.1 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // // ------------------------------------------------------------------------------ using System; using System.Collections; using System.Collections.Generic; using System.Serialization; using System.Diagnostics; namespace Kadecot { public class WampDeserializer { public WampDeserializer() { } public static object Parse(string msg) { object data; if (msg == null || msg.Equals("")) throw new ArgumentNullException(); Debug.WriteLine("[wamp perser] message received" + msg); data = Json.Parse(msg); if (!(data is IList) || ((data is IList) && ((List)data).Count < 2)) { return null; } List list = (List)data; switch ((Int64)(list[0])) { case (Int64)WAMP_MSG_TYPE.HELLO: // WAMP SPEC: [HELLO, Realm|uri, Details|dict] if (((List)data).Count < 3) { return null; } break; case (Int64)WAMP_MSG_TYPE.WELCOME: // WAMP SPEC: [WELCOME, Session|id, Details|dict] if (((List)data).Count < 3) { return null; } break; case (Int64)WAMP_MSG_TYPE.ABORT: // WAMP SPEC: [ABORT, Details|dict, Reason|uri] if (((List)data).Count < 3) { return null; } break; case (int)WAMP_MSG_TYPE.CHALLENGE: // advanced WAMP SPEC: [CHALLENGE, AuthMethod|string, Extra|dict] if (((List)data).Count < 3) { return null; } break; case (int)WAMP_MSG_TYPE.AUTHENTICATE: // advanced WAMP SPEC: [CHALLENGE, AuthMethod|string, Extra|dict] if (((List)data).Count < 3) { return null; } break; case (int)WAMP_MSG_TYPE.GOODBYE: // WAMP SPEC: [GOODBYE, Details|dict, Reason|uri] if (((List)data).Count < 3) { return null; } break; case (int)WAMP_MSG_TYPE.HEARTBEAT: // advanced WAMP SPEC: [AUTHENTICATE, Signature|string, Extra|dict] if (((List)data).Count < 3) { return null; } break; case (int)WAMP_MSG_TYPE.ERROR: // WAMP SPEC: [ERROR, REQUEST.Type|int, REQUEST.Request|id, Details|dict, Error|uri, (Arguments|list, ArgumentsKw|dict)] if (((List)data).Count < 5) { return null; } switch ((int)((List)data)[1]) { case (int)WAMP_MSG_TYPE.GOODBYE:// add QUnit test case (int)WAMP_MSG_TYPE.YIELD:// add QUnit test case (int)WAMP_MSG_TYPE.ERROR:// add QUnit test case (int)WAMP_MSG_TYPE.SUBSCRIBE: case (int)WAMP_MSG_TYPE.UNSUBSCRIBE: case (int)WAMP_MSG_TYPE.PUBLISH: case (int)WAMP_MSG_TYPE.INVOCATION: case (int)WAMP_MSG_TYPE.CALL: break; case (int)WAMP_MSG_TYPE.REGISTER: case (int)WAMP_MSG_TYPE.UNREGISTER: // WAMP SPEC: [ERROR, REGISTER, REGISTER.Request|id, Details|dict, Error|uri] break; default: return null; } break; case (int)WAMP_MSG_TYPE.PUBLISH: // WAMP SPEC: [PUBLISH, Request|id, Options|dict, Topic|uri] // WAMP SPEC: [PUBLISH, Request|id, Options|dict, Topic|uri, Arguments|list] // WAMP SPEC: [PUBLISH, Request|id, Options|dict, Topic|uri, Arguments|list, ArgumentsKw|dict] if (((List)data).Count < 4) { return null; } break; case (int)WAMP_MSG_TYPE.PUBLISHED: // WAMP SPEC: [PUBLISHED, PUBLISH.Request|id, Publication|id] if (((List)data).Count < 3) { return null; } break; case (int)WAMP_MSG_TYPE.SUBSCRIBE: // WAMP SPEC: [SUBSCRIBE, Request|id, Options|dict, Topic|uri] if (((List)data).Count < 4) { return null; } break; case (int)WAMP_MSG_TYPE.SUBSCRIBED: // WAMP SPEC: [SUBSCRIBED, SUBSCRIBE.Request|id, Subscription|id] if (((List)data).Count < 3) { return null; } break; case (int)WAMP_MSG_TYPE.UNSUBSCRIBE: // WAMP SPEC: [UNSUBSCRIBE, Request|id, SUBSCRIBED.Subscription|id] if (((List)data).Count < 3) { return null; } break; case (int)WAMP_MSG_TYPE.UNSUBSCRIBED: // WAMP SPEC: [UNSUBSCRIBED, UNSUBSCRIBE.Request|id] if (((List)data).Count < 2) { return null; } break; case (int)WAMP_MSG_TYPE.EVENT: // WAMP SPEC: [EVENT, SUBSCRIBED.Subscription|id, PUBLISHED.Publication|id, Details|dict] // WAMP SPEC: [EVENT, SUBSCRIBED.Subscription|id, PUBLISHED.Publication|id, Details|dict, PUBLISH.Arguments|list] // WAMP SPEC: [EVENT, SUBSCRIBED.Subscription|id, PUBLISHED.Publication|id, Details|dict, PUBLISH.Arguments|list, PUBLISH.ArgumentKw|dict] if (((List)data).Count < 4) { return null; } break; case (int)WAMP_MSG_TYPE.CALL: // WAMP SPEC: [CALL, Request|id, Options|dict, Procedure|uri] // WAMP SPEC: [CALL, Request|id, Options|dict, Procedure|uri, Arguments|list] // WAMP SPEC: [CALL, Request|id, Options|dict, Procedure|uri, Arguments|list, ArgumentsKw|dict] if (((List)data).Count < 4) { return null; } break; case (int)WAMP_MSG_TYPE.CANCEL: // advanced WAMP SPEC: [CANCEL, CALL.Request|id, Options|dict] if (((List)data).Count < 3) { return null; } break; case (int)WAMP_MSG_TYPE.RESULT: // WAMP SPEC: [RESULT, CALL.Request|id, Details|dict] // WAMP SPEC: [RESULT, CALL.Request|id, Details|dict, YIELD.Arguments|list] // WAMP SPEC: [RESULT, CALL.Request|id, Details|dict, YIELD.Arguments|list, YIELD.ArgumentsKw|dict] if (((List)data).Count < 3) { return null; } break; case (int)WAMP_MSG_TYPE.REGISTER: // WAMP SPEC: [REGISTER, Request|id, Options|dict, Procedure|uri] if (((List)data).Count < 4) { return null; } break; case (int)WAMP_MSG_TYPE.REGISTERED: // WAMP SPEC: [REGISTERED, REGISTER.Request|id, Registration|id] if (((List)data).Count < 3) { return null; } break; case (int)WAMP_MSG_TYPE.UNREGISTER: // WAMP SPEC: [UNREGISTER, Request|id, REGISTERED.Registration|id] if (((List)data).Count < 3) { return null; } break; case (int)WAMP_MSG_TYPE.UNREGISTERED: // WAMP SPEC: [UNREGISTERED, UNREGISTER.Request|id] if (((List)data).Count < 2) { return null; } break; case (int)WAMP_MSG_TYPE.INVOCATION: // WAMP SPEC: [INVOCATION, Request|id, REGISTERED.Registration|id, Details|dict] // WAMP SPEC: [INVOCATION, Request|id, REGISTERED.Registration|id, Details|dict, CALL.Arguments|list] // WAMP SPEC: [INVOCATION, Request|id, REGISTERED.Registration|id, Details|dict, CALL.Arguments|list, CALL.ArgumentsKw|dict] if (((List)data).Count < 4) { return null; } break; case (int)WAMP_MSG_TYPE.INTERRUPT: // advanced WAMP SPEC: [INTERRUPT, INVOCATION.Request|id, Options|dict] if (((List)data).Count < 3) { return null; } break; case (int)WAMP_MSG_TYPE.YIELD: // WAMP SPEC: [YIELD, INVOCATION.Request|id, Options|dict, (Arguments|list, ArgumentsKw|dict)] if (((List)data).Count < 3) { return null; } break; default: return null; } return data; } } }