Exemplo n.º 1
0
 //---------------------------------------------------------------------
 Status Map::refresh() {
     if (mImage == nullptr) {
         Log::error(TAG, "Refreshing Map that doesn't have cache");
         assert(!"Refreshing Map that doesn't have cache");
         return throwException(TAG, ExceptionType::UNKNOWN, "Refreshing Map that doesn't have cache");
     } else {
         Log::trace(TAG, "Refreshing Map %s from cache", getSID().c_str());
         return mLoadFromImage();
     }
 }
Exemplo n.º 2
0
static void createBiss(FILE *irkFile, char *line, IrkRecord *rec, int *irkCount, int numLine)
{
  int pos;
  unsigned char sys = 0x26;
  unsigned int provider;
  unsigned char id = 0;
  unsigned char key[8];
  unsigned char PMTCRC[8];
  pos = 1;
  provider = getSID(line, &pos, numLine);
  getKey(key, line, &pos, numLine);
  getPMTCRC(PMTCRC, line, &pos, numLine);
  flushIrk(irkFile, rec, irkCount);
  putIrk(irkFile, rec, irkCount, sys, 0, provider, id, key);
  putIrk(irkFile, rec, irkCount, sys, 0, provider, id, PMTCRC);
  flushIrk(irkFile, rec, irkCount);
}
Exemplo n.º 3
0
bool P3ReplicationGroup::bindControlToReplica(OverlayPeerInfoPtr& replica) {
    ACE_GUARD_RETURN(ACE_SYNCH_RECURSIVE_MUTEX, mon, m_lock, false);
    ACE_Connector<FTControlClientHandler, ACE_SOCK_Connector> connector;
    Endpoint endpoint;
    replica->getFTSAPInfo()->getFirstEndpoint(endpoint);
    //printf("==============bindControlToReplica endpoint=%s\n", endpoint.toString().c_str());

    ThreadPerConnection *tpc = new ThreadPerConnection();
    //ACE_Strong_Bound_Ptr<ThreadPerConnection, ACE_Recursive_Thread_Mutex>* tpcPrt = new
    //      ACE_Strong_Bound_Ptr<ThreadPerConnection, ACE_Recursive_Thread_Mutex > (tpc);
    ExecutionModelPtr* tpcPrt = new
            ExecutionModelPtr(tpc);

    FTControlClientHandler* ftControlClient = new FTControlClientHandler(
            this,
            replica->getUUID(),
            replica->getFID(),
            this->getGroupUUID(),
            false, false, tpcPrt, 0, 0, 0);

    printMembers();
    SAPInfoPtr ftDataSAPInfo;

    //*(getGroupMembers()));
    tpc->bind(ftControlClient);
    tpc->open();
    //tpc->bind(ftControlClient);
    connector.reactor(tpc->getResources()->getReactor());

    if (connector.connect(ftControlClient, endpoint.getAddr()) == -1) {
        ACE_ERROR((LM_ERROR, ACE_TEXT("(%T)%@\n"),
                ACE_TEXT("(%T)ERROR: P3ReplicationGroup::bindControlToReplica - connect failed:")));
        ftControlClient->close();
        delete ftControlClient;
        return false;
    } else {
        if (m_debugP3ReplicationGroup) {
            ACE_DEBUG((LM_DEBUG, ACE_TEXT("(%t|%T)INFO: P3ReplicationGroup::bindControlToReplica - Connect to replica OK! UUID=%s\n"),
                    replica->getUUID()->toString().c_str()));
        }
    }
    UUIDPtr sid;
    getSID(sid);
    ftControlClient->initSession(
            sid,
            m_groupUUID,
            //m_iid,
            this->getServiceParams(),
            this->getPrimary(),
            this->getReplicaList(),
            ftDataSAPInfo);
    if (m_debugP3ReplicationGroup) {
        ACE_DEBUG((LM_DEBUG,
                ACE_TEXT("(%t|%T)INFO: P3ReplicationGroup::bindControlToReplica() - update(dataft) = (%@)\n"),
                ftDataSAPInfo.get()
                ));
    }
    if (m_clientControlManager.add(ftControlClient) == -1) {
        ACE_DEBUG((LM_DEBUG, ACE_TEXT("(%t|%T)INFO: P3ReplicationGroup::bindControlToReplica - to add to group! UUID=%s\n"),
                replica->getUUID()->toString().c_str()));
        return false;
    }
    //this->updateFTDataSAP(replica->getUUID(), ftDataSAPInfo); //why???
    replica->setFTDataSAP(ftDataSAPInfo);

    if (ftControlClient->asynchronous(true, false) == -1) {
        ACE_DEBUG((LM_DEBUG, ACE_TEXT("(%t|%T)INFO: P3ReplicationGroup::bindControlToReplica - to aync! UUID=%s\n"),
                replica->getUUID()->toString().c_str()));
        ftControlClient->close();
        return false;
    }
    ACE_DEBUG((LM_DEBUG, ACE_TEXT("(%t|%T)INFO: P3ReplicationGroup::bindControlToReplica -OK UUID=%s\n"),
            replica->getUUID()->toString().c_str()));
    return true;
}