Ejemplo n.º 1
0
        public bool SendMessage(SharkMessage p_Message)
        {
            if (p_Message == null)
            {
                return(false);
            }

            Trace.WriteLine(String.Format("Sending command: {0}", p_Message.Command));

            try
            {
                var s_SerializedMessage = JsonConvert.SerializeObject(p_Message,
                                                                      new JsonSerializerSettings {
                    ContractResolver = new CamelCaseResolver()
                });
                s_SerializedMessage += '\n';

                Trace.WriteLine("[C -> S] " + s_SerializedMessage);

                var s_MessageData = Encoding.UTF8.GetBytes(s_SerializedMessage);

                return(Send(s_MessageData, 0, s_MessageData.Length));
            }
            catch
            {
                return(false);
            }
        }
Ejemplo n.º 2
0
        public bool SendMessage(SharkMessage p_Message, Action <SharkResponseMessage> p_Callback)
        {
            if (p_Message == null)
            {
                return(false);
            }

            if (p_Callback == null)
            {
                return(SendMessage(p_Message));
            }

            Trace.WriteLine(String.Format("Sending command: {0}", p_Message.Command));

            if (p_Message.Blackbox == null)
            {
                p_Message.Blackbox = new Dictionary <string, JToken>();
            }

            lock (m_PacketCallbacks)
            {
                var s_PacketID = m_PacketCounter++;
                p_Message.Blackbox.Add("__gspid", s_PacketID);

                if (m_PacketCounter >= 65530)
                {
                    m_PacketCounter = 0;
                }

                m_PacketCallbacks.Add(s_PacketID, p_Callback);
            }

            // TODO: Implement a timeout

            try
            {
                var s_SerializedMessage = JsonConvert.SerializeObject(p_Message,
                                                                      new JsonSerializerSettings {
                    ContractResolver = new CamelCaseResolver()
                });
                s_SerializedMessage += '\n';

                Trace.WriteLine("[C -> S] " + s_SerializedMessage);

                var s_MessageData = Encoding.UTF8.GetBytes(s_SerializedMessage);

                return(Send(s_MessageData, 0, s_MessageData.Length));
            }
            catch
            {
                return(false);
            }
        }