Skip to content

C# complete dynamic deserializer to dictionary #47

@Jan-Heapster

Description

@Jan-Heapster

Hey all! Wanna use MsgPack in my AppProject. I have to handle very differtent packages, so i wanted to code a deserializer, that unpacks the msgPack to a c# Dictionary. If i have the dictionary i will check out to which function of my Server the package is adressed to (e.g. Login, general communication, ...).

My actual code looks like this:

public void Deserialize(byte[] rawMessage) {

        Dictionary<MessagePackObject, MessagePackObject> mpoDict = MessagePackSerializer.Create<Dictionary<MessagePackObject, MessagePackObject>>().Unpack(new MemoryStream(rawMessage));
        Dictionary<String, MessagePackObject> dict = mpoDict.ToDictionary(kv => (String)kv.Key, kv => kv.Value);
        MessagePackObject theValue;

        if (dict.TryGetValue("error", out theValue))
        {
            var error = (String)theValue;
        }
        else if (dict.TryGetValue("engine", out theValue))
        {
            var engine = (String)theValue;
            if(engine.Equals("@LOGIN")){Server.Client.Handler.LoginHandler(dict)}
            else if(engine.Equals("@REGISTER")){Server.Client.Handler.LoginHandler(dict)}
            else if(engine.Equals("@MESSAGE")){Server.Client.Handler.LoginHandler(dict)}
            else if(engine.Equals("@LOGOUT")){Server.Client.Handler.LoginHandler(dict)}
            else{Server.Clinet.Handler.ErrorHandler.throwError("Unrecognized Engine")}
        }
    }

some part of this seems to be not working, i get always errorstuff. Can someone help?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions