예제 #1
0
        /// <summary>
        /// A Message receive callback delegate that prints the SDT content
        /// of received messages.
        /// </summary>
        /// <param name="source"></param>
        /// <param name="args"></param>
        public void PrintReceivedMessage(Object source, MessageEventArgs args)
        {
            IMessage      message   = args.Message;
            ISDTContainer container = SDTUtils.GetContainer(message);
            StringBuilder sb        = new StringBuilder();

            if (container is IMapContainer)
            {
                IMapContainer map = (IMapContainer)container;
                sb.Append("map={");
                while (map.HasNext())
                {
                    KeyValuePair <string, ISDTField> entry = map.GetNext();
                    sb.Append(string.Format("\n\tkey={0} value={1}", entry.Key, entry.Value.Value.ToString()));
                }
                sb.Append("}\n");
            }
            else if (container is IStreamContainer)
            {
                IStreamContainer stream = (IStreamContainer)container;
                sb.Append("stream={");
                while (stream.HasNext())
                {
                    ISDTField entry = stream.GetNext();
                    sb.Append(string.Format("\n\tvalue={0}", entry.Value.ToString()));
                }
                sb.Append("}\n");
            }
            SampleUtils.HandleMessageEvent(source, args);
            Console.WriteLine(sb.ToString());
        }
예제 #2
0
        private static void BuildHeaderMap(IMessage msg, IDictionary <string, object> outHeaders)
        {
            IMapContainer headers = msg.UserPropertyMap;

            if (headers == null)
            {
                return;
            }

            while (headers.HasNext())
            {
                KeyValuePair <string, ISDTField> kv = headers.GetNext();
                string key = kv.Key;
                outHeaders[key] = kv.Value.Value;
            }
            headers.Close();
        }
예제 #3
0
        /*
         * Recursive map printer for displaying a map to the user.
         */
        public static string dumpMap(IMapContainer m, int indent)
        {
            string pad = getSpaces(indent);
            string ret = pad + "(Dumping map)\n";
            KeyValuePair <string, ISDTField> e;

            while ((e = m.GetNext()).Key != null)
            {
                ret += pad + string.Format("{0} : [Type={1}, Val={2}]\n", e.Key, e.Value.Type, e.Value.Value);
                if (e.Value.Type == SDTFieldType.MAP)
                {
                    ret += dumpMap((IMapContainer)e.Value.Value, indent + 4);
                }
                else if (e.Value.Type == SDTFieldType.STREAM)
                {
                    ret += dumpStream((IStreamContainer)e.Value.Value, indent + 4);
                }
            }
            m.Rewind();
            return(ret);
        }