Пример #1
0
            public void Send(Function func, long id)
            {
                using var buffer = new ArrayPoolBufferWriter <byte>(512);
                TLObjectFactory.DumpObject(buffer, new TLObjectWithExtra(func, id));
                var requestbytes = buffer.WrittenSpan;

                fixed(byte *str = requestbytes)
                td_json_client_send(client, str);
            }
Пример #2
0
        public static void WriteTLObjectValue(this Utf8JsonWriter writer, TLObject obj)
        {
            if (obj == null)
            {
                throw new ArgumentNullException(nameof(obj));
            }
            var converter = TLObjectFactory.GetConverterForTLObject(obj);

            converter.TdJsonWriteUnclosedObject(writer, obj);
            writer.WriteEndObject();
        }
Пример #3
0
        private static unsafe TLObjectWithExtra FetchObject(byte *cstr)
        {
            if (cstr == null || *cstr == 0)
            {
                return(new TLObjectWithExtra());
            }

            var span = new ReadOnlySpan <byte>(cstr, CString.strlen(cstr));
            var obj  = TLObjectFactory.ReadRootObject(span);

            return(obj);
        }
Пример #4
0
        public static void WriteTLObjectValue(this Utf8JsonWriter writer, TLObjectWithExtra obj)
        {
            if (obj.TLObject == null)
            {
                throw new ArgumentNullException(nameof(obj));
            }
            var converter = TLObjectFactory.GetConverterForTLObject(obj.TLObject);

            converter.TdJsonWriteUnclosedObject(writer, obj.TLObject);
            if (obj.Extra.HasValue)
            {
                writer.WritePropertyName(ExtraPropertyName);
                writer.WriteInt64String(obj.Extra.Value);
            }
            writer.WriteEndObject();
        }
Пример #5
0
            public TLObject Execute(Function func)
            {
                using var buffer = new ArrayPoolBufferWriter <byte>(512);
                TLObjectFactory.DumpObject(buffer, func);
                var   requestbytes = buffer.WrittenSpan;
                byte *result;

                fixed(byte *str = requestbytes)
                result = td_json_client_execute(client, str);

                if (result == null)
                {
                    return(null);
                }
                var obj = FetchObject(result);

                return(obj.TLObject);
            }