ocicache.cpp

来自「一个通用的oracle OCI开发程序包」· C++ 代码 · 共 98 行

CPP
98
字号
#ifndef _COCICache
#include "ocicache.h"
#endif

#ifndef _COCISession
#include "ocisess.h"
#endif

COCICache::COCICache(const COCISession& Sess)
: m_Session(Sess)
, ref(Sess)
{
}

COCICache::~COCICache()
{
}

bool COCICache::flush()
{
  OCIRef* r = 0; 
  sword status = OCICacheFlush(m_Session.get_env(), 
                m_Session.get_error(), 
                m_Session.get_svc(), 
                NULL, // client call back
                NULL, // retrieves list of dirty objects
                &r);


  if(r)
  {
    void* tmp = r;
    ref.set_instance(tmp);
  }

  return (r == 0);

}

void COCICache::free()
{
  CHECK(m_Session.get_error(),
        OCICacheFree(m_Session.get_env(), m_Session.get_error(), m_Session.get_svc())); 
}

int  COCICache::get_size(bool maximum)
{
  ub4 Size = 0;
  ub4 Len  = sizeof(ub4);

  CHECK(m_Session.get_error(),
        OCIAttrGet ( m_Session.get_env(), OCI_HTYPE_ENV,
        &Size, &Len, maximum ? OCI_ATTR_CACHE_MAX_SIZE : OCI_ATTR_CACHE_OPT_SIZE, 
        m_Session.get_error()));

  return Size;
}
 
void COCICache::set_size(int size, bool maximum)
{
  ub4 Len  = sizeof(ub4);

  CHECK(m_Session.get_error(),
        OCIAttrSet(m_Session.get_env(), OCI_HTYPE_ENV,
        &size, Len, maximum ? OCI_ATTR_CACHE_MAX_SIZE :OCI_ATTR_CACHE_OPT_SIZE,
        m_Session.get_error()));
}


bool COCICache::refresh()
{
  OCIRef* r = 0; 
  OCICacheRefresh(m_Session.get_env(), m_Session.get_error(), m_Session.get_svc(),
            OCI_REFRESH_LOADED, 
            NULL,
            NULL, 
            &r);

  if(r)
  {
    void* tmp = r;
    ref.set_instance(tmp);
  }

  return (r == 0);
}

void COCICache::unmark()
{
  CHECK(m_Session.get_error(),
        OCICacheUnmark(m_Session.get_env(), m_Session.get_error(), m_Session.get_svc())); 
}

void COCICache::unpin()
{
  CHECK(m_Session.get_error(),
        OCICacheUnpin(m_Session.get_env(), m_Session.get_error(), m_Session.get_svc())); 
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?