Реактивный настраиваемый курсор закрывается, когда коллекция mongodb пуста

Вы можете частично разоблачить интерфейсы класса для указанного клиента, наследуя его от класса интерфейса.

class FooA_for_FooB
{
public:
    virtual void Hello() = 0;
    virtual void Hello2() = 0;
};

class FooA : public FooA_for_FooB
{
private: /* make them private */
    void Hello() override;
    void Hello2() override;
private:
    void Hello3();
    int m_iData;
};

class FooB
{
    void fun()
    {
        FooA objA;
        FooA_for_FooB &r = objA;
        r.Hello()  // right
        r.Hello2() // right
        objA.Hello3() // compile error
        objA.m_iData = 0; // compile error
    }
};

class FooC
{
    void fun()
    {
        FooA objA;
        objA.Hello()  // compile error
        objA.Hello2() // compile error
        objA.Hello3() // compile error
        objA.m_iData = 0; // compile error
    }
};

Здесь управление доступом улучшено базовым классом FooA_for_FooB. По ссылке типа FooA_for_FooB, FooB может получить доступ к членам, определенным в FooA_for_FooB. Тем не менее, FooC не может получить доступ к этим членам, поскольку они были переопределены как частные члены в FooA. Ваша цель может быть достигнута, если вы не используете тип FooA_for_FooB в FooC или в других местах, кроме FooB, который можно сохранить, не обращая внимания.

Этот подход не нуждается в friend, что делает вещи простыми.

Аналогичную вещь можно сделать, сделав все частным в базовом классе и выборочно обернув и выставив некоторые из членов как общедоступные в производном классе. Однако этот подход может иногда требовать уродливого понижения. (Потому что базовый класс станет «валютой» среди всей программы.)

1
задан Joan Bonilla 17 January 2019 в 07:41
поделиться

1 ответ

Действительно, даже «найти все» в пустых ограниченных коллекциях считается несоответствием, а курсор не работает. responsetiveMongoOperations.tail (new Query (), Event.class) возвращает мертвый курсор, как и аннотированный репозиторий. Spring документы просто дублируют документы mongo, в которых указано

Пригодные для использования курсоры могут стать мертвыми или недействительными, если либо: курсор возвращает документ в «конец» коллекции, а затем приложение> удаляет этот документ.

Только обходной путь, по-видимому, является исходной фиктивной записью, вставленной до подписки.

0
ответ дан Julian Ruhe 17 January 2019 в 07:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: