void push()
        {
            valueChanged = false;
            MessageBuffer data = new MessageBuffer();

            SharedStateSerializer.serializeWithType(ref data, m_value);
            setVar(data);
        }
        public SharedState(string pName, T pValue = default(T), SharedStateType pMode = SharedStateType.USE_COUPLING_MODE) : base(pName, pMode)
        {
            m_value = pValue;
            MessageBuffer mb = new MessageBuffer();

            SharedStateSerializer.serializeWithType(ref mb, m_value);
            subscribe(mb);
        }
        public void setVar(SessionID sid, string className, string varName, MessageBuffer mb, bool muted = false)
        {
            MessageBuffer mb2 = new MessageBuffer();

            SharedStateSerializer.serialize(ref mb2, m_publicSessionID);
            mb2.add(clientId);
            mb2.add(className);
            mb2.add(varName);
            mb2.add(mb);
            Message m = new Message(mb, Message.MessagesType.COVISE_MESSAGE_VRB_REGISTRY_SET_VALUE);

            sendMessage(m);
        }
        public void subscribeVar(SessionID sid, string className, string varName, MessageBuffer mb)
        {
            MessageBuffer mb2 = new MessageBuffer();

            SharedStateSerializer.serialize(ref mb2, m_publicSessionID);
            mb2.add(tcpSocket.clientID);
            mb2.add(className);
            mb2.add(varName);
            mb2.add(mb);
            Message m = new Message(mb2, Message.MessagesType.COVISE_MESSAGE_VRB_REGISTRY_SUBSCRIBE_VARIABLE);

            sendMessage(m);
        }
 public override void deserializeValue(MessageBuffer mb)
 {
     SharedStateSerializer.deserializeWithType <T>(ref mb, ref m_value);
 }