FILE* Appender::OpenAppendFile( char* mod ) { char tmpfile[MAX_FILENAME_LEN]; FILE* fp = NULL; JK_SPRITF_S(tmpfile, MAX_FILENAME_LEN, "molydb_af_%d.dmf", ServerConfigData::IsMaster() ); JK_OPENFILE_S( fp,tmpfile, mod); return fp; }
void DataSpace::Replication( int cmd, void* key, void* val ) { if ( m_bSlave ) { return; } MSG_M2S_APPENDCOMMAND_CMD cmdMsg; cmdMsg.m_byLen = JK_SPRITF_S( cmdMsg.m_strCmd, MAX_CMD_LEN, "%d %s %s \n", cmd, (char*)key, (char*)val ); SlaveMgr::GetInstance().BroadAllSlave( (BYTE*)&cmdMsg, cmdMsg.GetMsgSize() ); }
void DataSpace::Operation( int cmd, void* key, void* val ) { char* strTemp = (char*)JK_MALLOC(MAX_CMD_LEN); // char[128]; JK_SPRITF_S( strTemp, MAX_CMD_LEN, "%d %s %s \n", cmd, (char*)key, (char*)val ); AppendCmdQueue::Enqueue( strTemp ); }
void ClientAgent::OnRecv(BYTE *pMsg, WORD wSize) { MSG_BASE* pMsgBase = (MSG_BASE*)pMsg; switch (pMsgBase->m_byCategory) { case emc_CS_CATEGORY: { switch (pMsgBase->m_byProtocol) { case C2S_CLTREGISTER_SYN: { DISPMSG_SUCCESS( "Accept client[%s] success!\n", GetIP() ); m_iAgentType = 1; } break; case C2S_INSERT_ITEM_SYN: { MSG_C2S_INSERT_ITEM_SYN* pInsertMsg = (MSG_C2S_INSERT_ITEM_SYN*)pMsg; if ( !CheckSvrReady() ) { return; } if (DataSpace::GetInstance().InsertKV(pInsertMsg->strKey, pInsertMsg->m_usKeyLen, pInsertMsg->strVal, pInsertMsg->m_usValLen)) { ReplyResult( egr_INSERTSUCCESS ); } else { ReplyResult( egr_INSERTFAILD ); } } break; case C2S_SELECT_ITEM_SYN: { MSG_C2S_SELECT_ITEM_SYN* pInsertMsg = (MSG_C2S_SELECT_ITEM_SYN*)pMsg; char* strVal = (char*)DataSpace::GetInstance().GetValue(pInsertMsg->strKey); if (NULL == strVal) { ReplyResult( egr_CANTFINDVAL ); } else { MSG_S2C_SELECT_ITEM_ACK ackmsg; strcpy_s(ackmsg.strKey, MAX_KEY_LEN, pInsertMsg->strKey); strcpy_s(ackmsg.strVal, 1024, strVal); Send((BYTE*)&ackmsg, sizeof(MSG_S2C_SELECT_ITEM_ACK)); } } break; case C2S_REMOVE_ITEM_SYN: { MSG_C2S_REMOVE_ITEM_SYN* pInsertMsg = (MSG_C2S_REMOVE_ITEM_SYN*)pMsg; if ( !CheckSvrReady() ) { return; } if ( !DataSpace::GetInstance().RemoveKV(pInsertMsg->strKey) ) { ReplyResult( egr_CANTFINDVAL ); } else { ReplyResult( egr_REMOVESUCCESS ); } } break; case C2S_SELECT_KEYS_SYN: { MSG_C2S_SELECT_KEYS_SYN* pKeysMsg = (MSG_C2S_SELECT_KEYS_SYN*)pMsg; if ( !CheckSvrReady() ) { return; } MSG_S2C_SELECT_KEYS_ACK ackmsg; DataSpace::GetInstance().FetchKeys(pKeysMsg->m_szPattern, 0, 100, ackmsg.m_szKeys, ackmsg.m_iKeysCnt ); if ( 0 == ackmsg.m_iKeysCnt ) { ReplyResult( egr_NOSUCHKEYS ); } Send((BYTE*)&ackmsg, ackmsg.GetMsgSize() ); } break; case C2S_EXISTS_KEY_SYN: { MSG_C2S_EXISTS_KEY_SYN* pKeysMsg = (MSG_C2S_EXISTS_KEY_SYN*)pMsg; if ( !CheckSvrReady() ) { return; } if( DataSpace::GetInstance().IsExists(pKeysMsg->strKey ) ) { ReplyResult( egr_KEYEXISTS ); } else { ReplyResult( egr_NOSUCHKEYS ); } } break; case C2S_LPUSH_ITEM_SYN: { MSG_C2S_LPUSH_ITEM_SYN* pInsertMsg = (MSG_C2S_LPUSH_ITEM_SYN*)pMsg; if ( !CheckSvrReady() ) { return; } if (DataSpace::GetInstance().ListPushLeft(pInsertMsg->strKey, pInsertMsg->m_usKeyLen, pInsertMsg->strVal, pInsertMsg->m_usValLen)) { ReplyResult( egr_INSERTSUCCESS ); } else { ReplyResult( egr_INSERTFAILD ); } } break; case C2S_RPUSH_ITEM_SYN: { MSG_C2S_RPUSH_ITEM_SYN* pInsertMsg = (MSG_C2S_RPUSH_ITEM_SYN*)pMsg; if ( !CheckSvrReady() ) { return; } if (DataSpace::GetInstance().ListPushRight(pInsertMsg->strKey, pInsertMsg->m_usKeyLen, pInsertMsg->strVal, pInsertMsg->m_usValLen)) { ReplyResult( egr_INSERTSUCCESS ); } else { ReplyResult( egr_INSERTFAILD ); } } break; case C2S_LPOP_ITEM_SYN: { MSG_C2S_LPOP_ITEM_SYN* pInsertMsg = (MSG_C2S_LPOP_ITEM_SYN*)pMsg; if ( !CheckSvrReady() ) { return; } char* strVal = (char*)( DataSpace::GetInstance().ListPopLeft(pInsertMsg->strKey) ); if (NULL == strVal) { ReplyResult( egr_CANTFINDVAL ); } else { MSG_S2C_SELECT_ITEM_ACK ackmsg; strcpy_s(ackmsg.strKey, MAX_KEY_LEN, pInsertMsg->strKey); strcpy_s(ackmsg.strVal, 1024, strVal); Send((BYTE*)&ackmsg, sizeof(MSG_S2C_SELECT_ITEM_ACK)); } } break; case C2S_RPOP_ITEM_SYN: { if ( !CheckSvrReady() ) { return; } MSG_C2S_RPOP_ITEM_SYN* pInsertMsg = (MSG_C2S_RPOP_ITEM_SYN*)pMsg; char* strVal = (char*)( DataSpace::GetInstance().ListPopRight(pInsertMsg->strKey) ); if (NULL == strVal) { ReplyResult( egr_CANTFINDVAL ); } else { MSG_S2C_SELECT_ITEM_ACK ackmsg; strcpy_s(ackmsg.strKey, MAX_KEY_LEN, pInsertMsg->strKey); strcpy_s(ackmsg.strVal, 1024, strVal); Send((BYTE*)&ackmsg, sizeof(MSG_S2C_SELECT_ITEM_ACK)); } } break; case C2S_LLEN_ITEM_SYN: { if ( !CheckSvrReady() ) { return; } MSG_C2S_LLEN_ITEM_SYN* pllMsg = (MSG_C2S_LLEN_ITEM_SYN*)pMsg; int iLength = DataSpace::GetInstance().GetListLength(pllMsg->strKey); MSG_S2C_SELECT_ITEM_ACK ackmsg; strcpy_s(ackmsg.strKey, MAX_KEY_LEN, pllMsg->strKey); JK_SPRITF_S( ackmsg.strVal, 1024, "%d", iLength ); Send((BYTE*)&ackmsg, sizeof(MSG_S2C_SELECT_ITEM_ACK)); } break; default: { DISPMSG_ERROR("Error protocol type, cat[%d], pro[%d]", pMsgBase->m_byCategory, pMsgBase->m_byProtocol ); } break; } } break; case emc_MS_CATEGORY: { switch (pMsgBase->m_byProtocol) { case S2M_SLVREGISTER_SYN: { DISPMSG_SUCCESS( "Accept slave[%s] success!\n", GetIP() ); m_iAgentType = 2; Appender::ReplicateAppendFile( this ); SlaveMgr::GetInstance().InsertSlave( this ); } break; case S2M_APPENDFILE_SYN: { // sync replication } break; } } break; default: { DISPMSG_ERROR("Error protocol type, cat[%d], pro[%d]", pMsgBase->m_byCategory, pMsgBase->m_byProtocol ); } break; } }