Непонятен код в Pipelines.RIO

298
28 августа 2017, 05:40

Ковыряю исходники System.IO.Pipelines.Networking.Windows.RIO, непонятен следующий момент:

public unsafe static RegisteredIO Initalize(IntPtr socket)
{
    UInt32 dwBytes = 0;
    RioExtensionFunctionTable rio = new RioExtensionFunctionTable();
    Guid rioFunctionsTableId = new Guid("8509e081-96dd-4005-b165-9e2ee8c79e3f");
    int True = -1;
    int result = setsockopt(socket, IPPROTO_TCP, TcpNodelay, (char*)&True, 4);
    if (result != 0)
    {
        var error = WSAGetLastError();
        throw new Exception($"ERROR: setsockopt TCP_NODELAY returned {error}");
    }
}

Как int True может быть равно -1? Это какая то магия между управляемым и неуправляемым кодом или банально ошибка?

Answer 1

По идее должно было хватить и единицы, но -1 в битовом представлении будет давать все единицы, что как бы дает максимально отличный от нуля вариант. А так как всё, не являющееся нулем есть истина, то и минус единица вполне подходит.

Явной булевой переменной тут вообще не используется при передаче между управляемым и неуправляемым кодом. Поэтому о каких-то особенностях в этом плане говорить не приходится.

READ ALSO
Создание файлов в FileTable по UNC-пути к каталогу используя C# (CLR SQL) - C#

Создание файлов в FileTable по UNC-пути к каталогу используя C# (CLR SQL) - C#

Привет! Есть тестовая процедурка, написанная на C# CLR SQL, которая потом работает как обычная хранимкаПроцедура пытается создать файл в сетевой...

377
Десериализация JSON в C#

Десериализация JSON в C#

Есть класс в котором одно из свойств это объект из библиотеки dllСуть в том, что при вызове метода JsonConvert

434
Копирование картинки из тега img

Копирование картинки из тега img

Здравствуйте, есть капча при обновлении страницы появляеться новая

218
Как обойти скрытые папки при переборе файлов?

Как обойти скрытые папки при переборе файлов?

При переборе файлов в папках есть одна проблема, это скрытые файлы (переберает по ним тоже), как можно обойти скрытые папки?

283