Beispiel #1
0
        private static ErrorCode TryParseCore(string str, out CSeqHeader header)
        {
            osip_cseq_t *native = null;
            var          strPtr = Marshal.StringToHGlobalAnsi(str);

            try
            {
                ErrorCode errorCode = NativeMethods.osip_cseq_init(&native);
                if (!errorCode.EnsureSuccess())
                {
                    header = null;
                    return(errorCode);
                }

                errorCode = NativeMethods.osip_cseq_parse(native, strPtr);
                if (!errorCode.EnsureSuccess())
                {
                    header = null;
                    return(errorCode);
                }

                header = FromNative(native);
                return(errorCode);
            }
            finally
            {
                NativeMethods.osip_cseq_free(native);
                Marshal.FreeHGlobal(strPtr);
            }
        }
Beispiel #2
0
        internal static CSeqHeader FromNative(osip_cseq_t *native)
        {
            var header = new CSeqHeader
            {
                Method = Marshal.PtrToStringAnsi(native->method),
                Number = Marshal.PtrToStringAnsi(native->number)
            };

            return(header);
        }
Beispiel #3
0
        public CSeqHeader DeepClone()
        {
            osip_cseq_t *native = ToNative();

            try
            {
                return(FromNative(native));
            }
            finally
            {
                NativeMethods.osip_cseq_free(native);
            }
        }
Beispiel #4
0
        public override string ToString()
        {
            IntPtr       ptr    = IntPtr.Zero;
            osip_cseq_t *native = ToNative();

            try
            {
                NativeMethods.osip_cseq_to_str(native, &ptr).ThrowOnError();
                return(Marshal.PtrToStringAnsi(ptr));
            }
            finally
            {
                NativeMethods.osip_cseq_free(native);
                Marshal.FreeHGlobal(ptr);
            }
        }
 public static extern ErrorCode osip_cseq_clone(osip_cseq_t *header, osip_cseq_t **dest);
 public static extern ErrorCode osip_cseq_to_str(osip_cseq_t *header, IntPtr *dest);
 public static extern ErrorCode osip_cseq_parse(osip_cseq_t *header, IntPtr hvalue);
 public static extern void osip_cseq_free(osip_cseq_t *header);