Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
PROTOCOL_BASE_CONNECT_ACK
#1
Я пробую взять значение сессии из ClientConnection, но что то не получается.
PROTOCOL_BASE_CONNECT_ACK
[Изображение: 2BEkPkSyeiM.jpg]
Ответ
#2
Код:
ClientConnection session = new ClientConnection();

...

Тогда уж так:

[SRC="csharp"]class PROTOCOL_BASE_CONNECT_ACK : Packet
{
NetworkSession session;

public PROTOCOL_BASE_CONNECT_ACK(NetworkSession session)
{
this.session = session;
}

public override void WriteImpl()
{
// ...

Write<ushort>(session.Seed);
Write<int>(session.Id);
}
}
[/SRC]


[SRC="csharp"]SendPacket(new PROTOCOL_BASE_CONNECT_ACK(this));
[/SRC]


Ну или сделать как-то так:

[SRC="csharp"]class Packet : ServerPacket
{
public virtual void WriteImpl()
{

}
}

class ServerPacket
{
protected NetworkSession Session { get; set; }

public void Init(NetworkSession session)
{
Session = session;
}

public void PreparationForSend()
{
// ...
}

// ...
}
[/SRC]


Метод отправки в NetworkSession будет выглядеть так:

[SRC="csharp"]public void SendPacket(ServerPacket packet)
{
try
{
packet.Init(this);
packet.WriteImpl();
packet.PreparationForSend();

stream.BeginWrite(packet.Data, 0, packet.Data.Length, SendEnd, null);
}
catch (Exception ex)
{
log.Error(ex);
}
finally
{
packet = null;
}
}
[/SRC]


Тогда свойство Session будет доступно в любом пакете.
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  ничего не приходит после PROTOCOL_BASE_CONNECT_ACK Sojang 41 8,593 06-09-2024, 03:58 PM
Последний пост: empireb
  PROTOCOL_BASE_CONNECT_ACK Sojang 12 3,236 01-21-2016, 12:15 PM
Последний пост: PROGRAMMATOR

Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)