Ожидание получения данных TCP(ObooltNet library)

150
06 мая 2018, 18:00

Приветствую уважаемые гуру перегруженного стека. У меня такой вопрос: Есть класс-обертка построенный на 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)

наполнить структуру сразу в этом же методе и вернуть уже наполненную структуру. Помогите, ребят. Уже не осталось не сгоревшего места на пукане :)

READ ALSO
Перемещение элементов формы

Перемещение элементов формы

Вопрос из серии "помогите загуглить"

206
Как открыть новое окно, чтобы старое осталось активным? C# forms

Как открыть новое окно, чтобы старое осталось активным? C# forms

Нужно открыть новое окно приложения, чтобы с предыдущим можно было взаимодействоватьНигде не смог найти информацию про это

186
Помогите с кодом

Помогите с кодом

Я написал обычный калькулятор, работающий в консолиЯ хочу сделать так, чтобы, например, при записи в консоль слова "Калькулятор" заработал...

174
Ошибка подключения к БД в Debian

Ошибка подключения к БД в Debian

Не могу подключиться к базе данных на VDS(ОС Debian)

191