mirror of
https://github.com/sochix/TLSharp.git
synced 2026-03-20 04:05:19 +01:00
Fixed receive only call.
* Must remove debug message "Msg code:" when feature will get complete.
This commit is contained in:
parent
a4a5ae4a2e
commit
cf983474b4
|
|
@ -136,22 +136,35 @@ namespace TLSharp.Core.Network
|
||||||
return new Tuple<byte[], ulong, int>(message, remoteMessageId, remoteSequence);
|
return new Tuple<byte[], ulong, int>(message, remoteMessageId, remoteSequence);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<byte[]> Receive(TeleSharp.TL.TLMethod request)
|
public async Task<byte []> Receive (TeleSharp.TL.TLMethod request)
|
||||||
{
|
{
|
||||||
while (!request.ConfirmReceived)
|
while (!request.ConfirmReceived)
|
||||||
{
|
{
|
||||||
var result = DecodeMessage((await _transport.Receieve()).Body);
|
var result = DecodeMessage ((await _transport.Receieve ()).Body);
|
||||||
|
|
||||||
using (var messageStream = new MemoryStream(result.Item1, false))
|
using (var messageStream = new MemoryStream (result.Item1, false))
|
||||||
using (var messageReader = new BinaryReader(messageStream))
|
using (var messageReader = new BinaryReader (messageStream))
|
||||||
{
|
{
|
||||||
await processMessage(result.Item2, result.Item3, messageReader, request);
|
await processMessage (result.Item2, result.Item3, messageReader, request);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<byte[]> Receive()
|
||||||
|
{
|
||||||
|
var result = DecodeMessage ((await _transport.Receieve ()).Body);
|
||||||
|
|
||||||
|
using (var messageStream = new MemoryStream (result.Item1, false))
|
||||||
|
using (var messageReader = new BinaryReader (messageStream))
|
||||||
|
{
|
||||||
|
await processMessage (result.Item2, result.Item3, messageReader, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
public async Task SendPingAsync()
|
public async Task SendPingAsync()
|
||||||
{
|
{
|
||||||
var pingRequest = new PingRequest();
|
var pingRequest = new PingRequest();
|
||||||
|
|
@ -171,11 +184,13 @@ namespace TLSharp.Core.Network
|
||||||
// TODO: check sessionid
|
// TODO: check sessionid
|
||||||
// TODO: check seqno
|
// TODO: check seqno
|
||||||
|
|
||||||
|
|
||||||
//logger.debug("processMessage: msg_id {0}, sequence {1}, data {2}", BitConverter.ToString(((MemoryStream)messageReader.BaseStream).GetBuffer(), (int) messageReader.BaseStream.Position, (int) (messageReader.BaseStream.Length - messageReader.BaseStream.Position)).Replace("-","").ToLower());
|
//logger.debug("processMessage: msg_id {0}, sequence {1}, data {2}", BitConverter.ToString(((MemoryStream)messageReader.BaseStream).GetBuffer(), (int) messageReader.BaseStream.Position, (int) (messageReader.BaseStream.Length - messageReader.BaseStream.Position)).Replace("-","").ToLower());
|
||||||
needConfirmation.Add(messageId);
|
needConfirmation.Add(messageId);
|
||||||
|
|
||||||
uint code = messageReader.ReadUInt32();
|
uint code = messageReader.ReadUInt32();
|
||||||
messageReader.BaseStream.Position -= 4;
|
messageReader.BaseStream.Position -= 4;
|
||||||
|
Console.WriteLine ("Msg code: {0:x8}", code);
|
||||||
switch (code)
|
switch (code)
|
||||||
{
|
{
|
||||||
case 0x73f1f8dc: // container
|
case 0x73f1f8dc: // container
|
||||||
|
|
@ -217,21 +232,20 @@ namespace TLSharp.Core.Network
|
||||||
case 0x78d4dec1:
|
case 0x78d4dec1:
|
||||||
case 0x725b04c3:
|
case 0x725b04c3:
|
||||||
case 0x74ae4240:
|
case 0x74ae4240:
|
||||||
return await HandleUpdate(messageId, sequence, messageReader, request);
|
return await HandleUpdate(code, sequence, messageReader, request);
|
||||||
default:
|
default:
|
||||||
//logger.debug("unknown message: {0}", code);
|
//logger.debug("unknown message: {0}", code);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task<bool> HandleUpdate(ulong messageId, int sequence, BinaryReader messageReader, TeleSharp.TL.TLMethod request)
|
private async Task<bool> HandleUpdate(uint code, int sequence, BinaryReader messageReader, TeleSharp.TL.TLMethod request)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var update = ParseUpdate (messageId, messageReader);
|
var update = ParseUpdate (code, messageReader);
|
||||||
if (update != null && UpdatesEvent != null)
|
if (update != null && UpdatesEvent != null)
|
||||||
UpdatesEvent(update);
|
UpdatesEvent(update);
|
||||||
await Receive (request);
|
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
|
|
@ -239,9 +253,9 @@ namespace TLSharp.Core.Network
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private TeleSharp.TL.TLAbsUpdates ParseUpdate(ulong messageId, BinaryReader messageReader)
|
private TeleSharp.TL.TLAbsUpdates ParseUpdate(uint code, BinaryReader messageReader)
|
||||||
{
|
{
|
||||||
switch (messageId)
|
switch (code)
|
||||||
{
|
{
|
||||||
case 0xe317af7e:
|
case 0xe317af7e:
|
||||||
return DecodeUpdate<TeleSharp.TL.TLUpdatesTooLong>(messageReader);
|
return DecodeUpdate<TeleSharp.TL.TLUpdatesTooLong>(messageReader);
|
||||||
|
|
|
||||||
|
|
@ -138,6 +138,11 @@ namespace TLSharp.Core
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task WaitEventAsync()
|
||||||
|
{
|
||||||
|
await _sender.Receive ();
|
||||||
|
}
|
||||||
|
|
||||||
public bool IsUserAuthorized()
|
public bool IsUserAuthorized()
|
||||||
{
|
{
|
||||||
return _session.TLUser != null;
|
return _session.TLUser != null;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue