Приветствую уважаемые гуру перегруженного стека. У меня такой вопрос: Есть класс-обертка построенный на Tcp библиотеке ObooltNet Вот собственно его код (не весь, а касающийся задачи):
public void Send<T>(Request request)
{
if(IsBuzy || IsReceive)
{
return;
}
SetBuzy(true);
Logger.Write(LogTypes.Network, $"Send packet: '{Encoding.ASCII.GetString(Encode(request.ToString()))}' to server. ");
if (!IsConnected)
{
Connect();
}
if (typeof(T) == typeof(Download))
{
ActiveConnection.OnDataReceived += ReceiveDownload;
}
else if (typeof(T) == typeof(Auth))
{
ActiveConnection.OnDataReceived += ReceiveAuth;
}
else if (typeof(T) == typeof(Data))
{
ActiveConnection.OnDataReceived += ReceiveData;
}
else
{
Logger.Write(LogTypes.Network, $"Request incorrect packet type for return. Type: {typeof(T).ToString()}");
return;
}
Send(request);
}
Получение данных:
private void ReceiveAuth(object sender, NetConnection connection, byte[] e)
{
IsReceive = true;
if (Encoding.ASCII.GetString(e) == "")
{
return;
}
else
{
//byte[] decodeable = Decoder.Decode(e, e.Length);
ReceivedData = Encoding.ASCII.GetString(e);
m_AuthStruct.Parse(Desinflate()[0], Desinflate()[1]);
SetBuzy(false);
}
IsReceive = false;
}
Вообщем. Суть проблемы такова, что метод приема сообщения это событие. Нужно дождаться совершения этого события и полного приема данных именно в методе отправки, чтобы можно было легко и просто вызывать. Если добиться этого результата, то можно будет переделать обобщенный метод отправки на
public T Send<T>(Request request)
наполнить структуру сразу в этом же методе и вернуть уже наполненную структуру. Помогите, ребят. Уже не осталось не сгоревшего места на пукане :)
Сборка персонального компьютера от Artline: умный выбор для современных пользователей