At http://bazaar.launchpad.net/~ndb-connectors/ndb-connectors/telco-6.3
------------------------------------------------------------
revno: 230
revision-id: mtaylor@stripped
parent: mtaylor@stripped
parent: mtaylor@stripped
committer: Monty Taylor <mtaylor@stripped>
branch nick: telco-6.3
timestamp: Mon 2007-11-19 16:15:09 -0800
message:
Merged in handler changes.
modified:
interface/mgmapi/NdbLogEvent.i ndblogevent.i-20070906065931-8drgzkovsy4cdn0b-1
interface/mgmapi/NdbLogEventManager.i
ndbmgmlogeventhandle-20070906065939-pj4qrhof8kkzg3d1-1
java/com/mysql/cluster/mgmj/examples/SampleMGMJ.java
samplemgmj.java-20071119093428-2f2zw02dpk5jlq9f-2
java/mgmj.i mgmapi.i-20070415064013-80k9rsqzumm2kjaf-1
------------------------------------------------------------
revno: 192.1.25.1.48
revision-id: mtaylor@stripped
parent: mtaylor@stripped
committer: Monty Taylor <mtaylor@stripped>
branch nick: devel
timestamp: Mon 2007-11-19 15:55:29 -0800
message:
Fixed EventHandlers for MGM/J.
modified:
interface/mgmapi/NdbLogEvent.i ndblogevent.i-20070906065931-8drgzkovsy4cdn0b-1
interface/mgmapi/NdbLogEventManager.i
ndbmgmlogeventhandle-20070906065939-pj4qrhof8kkzg3d1-1
java/com/mysql/cluster/mgmj/examples/SampleMGMJ.java
samplemgmj.java-20071119093428-2f2zw02dpk5jlq9f-2
java/mgmj.i mgmapi.i-20070415064013-80k9rsqzumm2kjaf-1
=== modified file 'interface/mgmapi/NdbLogEvent.i'
--- a/interface/mgmapi/NdbLogEvent.i 2007-11-19 09:34:49 +0000
+++ b/interface/mgmapi/NdbLogEvent.i 2007-11-19 23:55:29 +0000
@@ -81,6 +81,7 @@
};
+
%inline %{
@@ -944,7 +945,7 @@
struct BaseEventWrapper {
int ret;
- BaseEvent * theEvent;
+ ndb_logevent * theEvent;
};
%}
=== modified file 'interface/mgmapi/NdbLogEventManager.i'
--- a/interface/mgmapi/NdbLogEventManager.i 2007-11-19 09:34:49 +0000
+++ b/interface/mgmapi/NdbLogEventManager.i 2007-11-19 23:55:29 +0000
@@ -48,8 +48,8 @@
ndb_logevent_handle * handle;
- std::map<Ndb_logevent_type,std::vector<NdbLogEventTypeListener *> >
evtListeners;
- std::map<ndb_mgm_event_category,std::vector<NdbLogEventCategoryListener *>
> evtCategoryListeners;
+ std::map<Ndb_logevent_type,NdbLogEventTypeListener *> evtListeners;
+ std::map<ndb_mgm_event_category,NdbLogEventCategoryListener *>
evtCategoryListeners;
public:
@@ -66,16 +66,10 @@
Ndb_logevent_type theType = listener->getEventType();
- std::vector<NdbLogEventTypeListener *> evtVec;
+ printf("Inserting %p, %d\n",listener, theType);
+ evtListeners.insert(std::make_pair<Ndb_logevent_type,NdbLogEventTypeListener
*>(theType,listener));
+
- try {
- evtVec = evtListeners.at(theType);
- } catch (std::out_of_range e) {
- if
(!(evtListeners.insert(std::make_pair<Ndb_logevent_type,std::vector<NdbLogEventTypeListener
*> >(theType,evtVec))).second) {
- return -1;
- }
- };
- evtVec.push_back(listener);
return 0;
}
@@ -87,17 +81,16 @@
ndb_mgm_event_category theCategory = listener->getEventCategory();
- std::vector<NdbLogEventCategoryListener *> evtVec;
+ NdbLogEventCategoryListener * evtLis;
+
try {
- evtVec = evtCategoryListeners.at(theCategory);
+ evtLis = evtCategoryListeners.at(theCategory);
} catch (std::out_of_range e) {
- if
(!((evtCategoryListeners.insert(std::make_pair<ndb_mgm_event_category,std::vector<NdbLogEventCategoryListener*>
>(theCategory,evtVec))).second)) {
+ if
(!((evtCategoryListeners.insert(std::make_pair<ndb_mgm_event_category,NdbLogEventCategoryListener*>(theCategory,evtLis))).second))
{
return -1;
}
- evtVec = evtCategoryListeners.at(theCategory);
};
- evtVec.push_back(listener);
return 0;
}
@@ -111,293 +104,42 @@
if (event==0) {
return NULL;
}*/
- ndb_logevent event;
+ ndb_logevent * event = (ndb_logevent*) malloc (sizeof(ndb_logevent));
+ if (event==0) {
+ return NULL;
+ }
BaseEventWrapper * eventWrapper = (BaseEventWrapper
*)malloc(sizeof(BaseEventWrapper));
//int r= ndb_logevent_get_next(handle,&(*event),timeout_in_milliseconds);
- eventWrapper->ret =
ndb_logevent_get_next(handle,&event,timeout_in_milliseconds);
+ eventWrapper->ret =
ndb_logevent_get_next(handle,&(*event),timeout_in_milliseconds);
eventWrapper->theEvent = NULL;
//TODO: Figure out how to deal with no event properly
if (eventWrapper->ret > 0) {
-
- switch(event.type) {
-
- case NDB_LE_Connected:
- eventWrapper->theEvent = (BaseEvent *)(new ConnectedEvent(event));
- break;
-
- case NDB_LE_Disconnected:
- eventWrapper->theEvent = (BaseEvent *)(new DisconnectedEvent(event));
- break;
-
- case NDB_LE_CommunicationClosed:
- eventWrapper->theEvent = (BaseEvent *)(new CommunicationClosedEvent(event));
- break;
-
- case NDB_LE_CommunicationOpened:
- eventWrapper->theEvent = (BaseEvent *)(new CommunicationOpenedEvent(event));
- break;
-
- case NDB_LE_ConnectedApiVersion:
- eventWrapper->theEvent = (BaseEvent *)(new ConnectedApiVersionEvent(event));
- break;
-
- case NDB_LE_GlobalCheckpointStarted:
- eventWrapper->theEvent = (BaseEvent *)(new GlobalCheckpointStartedEvent(event));
- break;
-
- case NDB_LE_GlobalCheckpointCompleted:
- eventWrapper->theEvent = (BaseEvent *)(new GlobalCheckpointCompletedEvent(event));
- break;
-
- case NDB_LE_LocalCheckpointStarted:
- eventWrapper->theEvent = (BaseEvent *)(new LocalCheckpointStartedEvent(event));
- break;
-
- case NDB_LE_LocalCheckpointCompleted:
- eventWrapper->theEvent = (BaseEvent *)(new LocalCheckpointCompletedEvent(event));
- break;
-
- case NDB_LE_LCPStoppedInCalcKeepGci:
- eventWrapper->theEvent = (BaseEvent *)(new LCPStoppedInCalcKeepGciEvent(event));
- break;
-
- case NDB_LE_LCPFragmentCompleted:
- eventWrapper->theEvent = (BaseEvent *)(new LCPFragmentCompletedEvent(event));
- break;
-
- case NDB_LE_NDBStartStarted:
- eventWrapper->theEvent = (BaseEvent *)(new NDBStartStartedEvent(event));
- break;
-
- case NDB_LE_NDBStartCompleted:
- eventWrapper->theEvent = (BaseEvent *)(new NDBStartCompletedEvent(event));
- break;
-
- case NDB_LE_STTORRYRecieved:
- eventWrapper->theEvent = (BaseEvent *)(new STTORRYRecievedEvent(event));
- break;
-
- case NDB_LE_StartPhaseCompleted:
- eventWrapper->theEvent = (BaseEvent *)(new StartPhaseCompletedEvent(event));
- break;
-
- case NDB_LE_CM_REGCONF:
- eventWrapper->theEvent = (BaseEvent *)(new CmRegConfEvent(event));
- break;
-
- case NDB_LE_CM_REGREF:
- eventWrapper->theEvent = (BaseEvent *)(new CmRegRefEvent(event));
- break;
-
- case NDB_LE_FIND_NEIGHBOURS:
- eventWrapper->theEvent = (BaseEvent *)(new FindNeighboursEvent(event));
- break;
-
- case NDB_LE_NDBStopStarted:
- eventWrapper->theEvent = (BaseEvent *)(new NDBStopStartedEvent(event));
- break;
-
- case NDB_LE_NDBStopCompleted:
- eventWrapper->theEvent = (BaseEvent *)(new NDBStopCompletedEvent(event));
- break;
-
- case NDB_LE_NDBStopForced:
- eventWrapper->theEvent = (BaseEvent *)(new NDBStopForcedEvent(event));
- break;
-
- case NDB_LE_NDBStopAborted:
- eventWrapper->theEvent = (BaseEvent *)(new NDBStopAbortedEvent(event));
- break;
-
- case NDB_LE_StartREDOLog:
- eventWrapper->theEvent = (BaseEvent *)(new StartREDOLogEvent(event));
- break;
-
- case NDB_LE_StartLog:
- eventWrapper->theEvent = (BaseEvent *)(new StartLogEvent(event));
- break;
-
- case NDB_LE_UNDORecordsExecuted:
- eventWrapper->theEvent = (BaseEvent *)(new UNDORecordsExecutedEvent(event));
- break;
-
- case NDB_LE_NR_CopyDict:
- eventWrapper->theEvent = (BaseEvent *)(new NRCopyDictEvent(event));
- break;
-
- case NDB_LE_NR_CopyDistr:
- eventWrapper->theEvent = (BaseEvent *)(new NRCopyDistrEvent(event));
- break;
-
- case NDB_LE_NR_CopyFragsStarted:
- eventWrapper->theEvent = (BaseEvent *)(new NRCopyFragsStartedEvent(event));
- break;
-
- case NDB_LE_NR_CopyFragDone:
- eventWrapper->theEvent = (BaseEvent *)(new NRCopyFragDoneEvent(event));
- break;
-
- case NDB_LE_NR_CopyFragsCompleted:
- eventWrapper->theEvent = (BaseEvent *)(new NRCopyFragsCompletedEvent(event));
- break;
-
- case NDB_LE_NodeFailCompleted:
- eventWrapper->theEvent = (BaseEvent *)(new NodeFailCompletedEvent(event));
- break;
-
- case NDB_LE_NODE_FAILREP:
- eventWrapper->theEvent = (BaseEvent *)(new NodeFAILREPEvent(event));
- break;
-
- case NDB_LE_ArbitState:
- eventWrapper->theEvent = (BaseEvent *)(new ArbitStateEvent(event));
- break;
-
- case NDB_LE_ArbitResult:
- eventWrapper->theEvent = (BaseEvent *)(new ArbitResultEvent(event));
- break;
-
- case NDB_LE_GCP_TakeoverStarted:
- eventWrapper->theEvent = (BaseEvent *)(new GCPTakeoverStartedEvent(event));
- break;
-
- case NDB_LE_GCP_TakeoverCompleted:
- eventWrapper->theEvent = (BaseEvent *)(new GCPTakeoverCompletedEvent(event));
- break;
-
- case NDB_LE_LCP_TakeoverStarted:
- eventWrapper->theEvent = (BaseEvent *)(new LCPTakeoverStartedEvent(event));
- break;
-
- case NDB_LE_LCP_TakeoverCompleted:
- eventWrapper->theEvent = (BaseEvent *)(new LCPTakeoverCompletedEvent(event));
- break;
-
- case NDB_LE_TransReportCounters:
- eventWrapper->theEvent = (BaseEvent *)(new TransReportCountersEvent(event));
- break;
-
- case NDB_LE_OperationReportCounters:
- eventWrapper->theEvent = (BaseEvent *)(new OperationReportCountersEvent(event));
- break;
-
- case NDB_LE_TableCreated:
- eventWrapper->theEvent = (BaseEvent *)(new TableCreatedEvent(event));
- break;
-
- case NDB_LE_UndoLogBlocked:
- eventWrapper->theEvent = (BaseEvent *)(new UndoLogBlockedEvent(event));
- break;
-
- case NDB_LE_JobStatistic:
- eventWrapper->theEvent = (BaseEvent *)(new JobStatisticEvent(event));
- break;
-
- case NDB_LE_SendBytesStatistic:
- eventWrapper->theEvent = (BaseEvent *)(new SendBytesStatisticEvent(event));
- break;
-
- case NDB_LE_ReceiveBytesStatistic:
- eventWrapper->theEvent = (BaseEvent *)(new ReceiveBytesStatisticEvent(event));
- break;
-
- case NDB_LE_MemoryUsage:
- eventWrapper->theEvent = (BaseEvent *)(new MemoryUsageEvent(event));
- break;
-
-/* case NDB_LE_ThreadConfigLoop:
- eventWrapper->theEvent = (BaseEvent *)(new ThreadConfigLoopEvent(event));
- break;
-*/
- case NDB_LE_TransporterError:
- eventWrapper->theEvent = (BaseEvent *)(new TransporterErrorEvent(event));
- break;
-
- case NDB_LE_TransporterWarning:
- eventWrapper->theEvent = (BaseEvent *)(new TransporterWarningEvent(event));
- break;
-
- case NDB_LE_MissedHeartbeat:
- eventWrapper->theEvent = (BaseEvent *)(new MissedHeartbeatEvent(event));
- break;
-
- case NDB_LE_DeadDueToHeartbeat:
- eventWrapper->theEvent = (BaseEvent *)(new DeadDueToHeartbeatEvent(event));
- break;
-
- case NDB_LE_WarningEvent:
- eventWrapper->theEvent = (BaseEvent *)(new WarningEventEvent(event));
- break;
-
- case NDB_LE_SentHeartbeat:
- eventWrapper->theEvent = (BaseEvent *)(new SentHeartbeatEvent(event));
- break;
-
- case NDB_LE_CreateLogBytes:
- eventWrapper->theEvent = (BaseEvent *)(new CreateLogBytesEvent(event));
- break;
-
- case NDB_LE_InfoEvent:
- eventWrapper->theEvent = (BaseEvent *)(new InfoEventEvent(event));
- break;
-
- case NDB_LE_SingleUser:
- eventWrapper->theEvent = (BaseEvent *)(new SingleUserEvent(event));
- break;
-
- case NDB_LE_BackupStarted:
- eventWrapper->theEvent = (BaseEvent *)(new BackupStartedEvent(event));
- break;
-
- case NDB_LE_BackupFailedToStart:
- eventWrapper->theEvent = (BaseEvent *)(new BackupFailedToStartEvent(event));
- break;
-
-/* case NDB_LE_BackupStatus:
- eventWrapper->theEvent = (BaseEvent *)(new BackupStatusEvent(event));
- break;
-*/
- case NDB_LE_BackupCompleted:
- eventWrapper->theEvent = (BaseEvent *)(new BackupCompletedEvent(event));
- break;
-
- case NDB_LE_BackupAborted:
- eventWrapper->theEvent = (BaseEvent *)(new BackupAbortedEvent(event));
- break;
-
-/* case NDB_LE_RestoreMetaData:
- eventWrapper->theEvent = (BaseEvent *)(new RestoreMetaDataEvent(event));
- break;
-*/
-/* case NDB_LE_RestoreData:
- eventWrapper->theEvent = (BaseEvent *)(new RestoreDataEvent(event));
- break;
-*/
-/* case NDB_LE_RestoreLog:
- eventWrapper->theEvent = (BaseEvent *)(new RestoreLogEvent(event));
- break;
-*/
-/* case NDB_LE_RestoreStarted:
- eventWrapper->theEvent = (BaseEvent *)(new RestoreStartedEvent(event));
- break;
-*/
-/* case NDB_LE_RestoreCompleted:
- eventWrapper->theEvent = (BaseEvent *)(new RestoreCompletedEvent(event));
- break;
-*/
- case NDB_LE_EventBufferStatus:
- eventWrapper->theEvent = (BaseEvent *)(new EventBufferStatusEvent(event));
- break;
-
- case NDB_LE_StartReport:
- eventWrapper->theEvent = (BaseEvent *)(new StartReportEvent(event));
- break;
-
- default:
- break;
- }
+ eventWrapper->theEvent = event;
+
+ NdbLogEventTypeListener * evtLis = NULL;
+ NdbLogEventCategoryListener * catLis = NULL;
+
+ try {
+ evtLis = evtListeners.at(event->type);
+
+ } catch (std::out_of_range e) {
+ // We don't have a listener to fire
+ }
+ if (evtLis != NULL) {
+ evtLis->handleEvent(event);
+ }
+ try {
+ catLis = evtCategoryListeners.at(event->category);
+
+ } catch (std::out_of_range e) {
+ // We don't have a listener to fire
+ }
+ if (catLis != NULL) {
+ catLis->handleEvent(event);
+ }
+
// r > 0, event exists;
// r==0, no event (timeout)
// r==-1, error
@@ -429,8 +171,8 @@
%}
-%feature("directors") NdbLogEventTypeListener;
-%feature("directors") NdbLogEventCategoryListener;
+%feature("director") NdbLogEventTypeListener;
+%feature("director") NdbLogEventCategoryListener;
class NdbLogEventListener {
public:
=== modified file 'java/com/mysql/cluster/mgmj/examples/SampleMGMJ.java'
--- a/java/com/mysql/cluster/mgmj/examples/SampleMGMJ.java 2007-11-19 09:39:22 +0000
+++ b/java/com/mysql/cluster/mgmj/examples/SampleMGMJ.java 2007-11-19 23:55:29 +0000
@@ -7,38 +7,43 @@
/**
* @param args
*/
+
+
public static void main(String[] args) throws MgmApiException {
NdbMgm mgm = NdbMgmFactory.createNdbMgm("localhost");
mgm.setConnectTimeout(4000);
mgm.connect(5, 3, true);
- int[] filter = { 15, NdbMgmEventCategory.NDB_MGM_EVENT_CATEGORY_STATISTIC.swigValue(),
0 };
- /*NdbFilterList theList = new NdbFilterList();
- NdbFilterItem theItem = new NdbFilterItem();
- theItem.setLevel(15);
- theItem.setCategory(NdbMgmEventCategory.NDB_MGM_EVENT_CATEGORY_STATISTIC);
+ /*int[] filter = { 15,
NdbMgmEventCategory.NDB_MGM_EVENT_CATEGORY_STATISTIC.swigValue(), 0 };
+ NdbLogEventManager manager = mgm.createNdbLogEventManager(filter); */
+
+ NdbFilterList theList = new NdbFilterList();
+ NdbFilterItem theItem = new
NdbFilterItem(15,NdbMgmEventCategory.NDB_MGM_EVENT_CATEGORY_STATISTIC);
theList.add(theItem);
- NdbLogEventManager manager = mgm.createNdbLogEventManager(theList);*/
- NdbLogEventManager manager = mgm.createNdbLogEventManager(filter);
-
+ NdbLogEventManager manager = mgm.createNdbLogEventManager(theList);
+ TransReportListener theListener = new TransReportListener();
+ System.out.println("Registering listener");
+ manager.registerListener(theListener);
+ System.out.println("Done");
+
while(true) {
//mgm.dumpState(1, 1000);
- BaseEvent event = manager.getLogEvent(5000);
+ NdbLogEvent event = manager.getLogEvent(5000);
if (event != null) {
- System.out.println("Got an Event from Node" + event.getSourceNodeId()+"
"+event.getType());
- if (event.getType() == NdbLogEventType.NDB_LE_TransReportCounters) {
- TransReportCountersEvent theEvent = new TransReportCountersEvent(event.getEvent());
+ System.out.println("Got an Event from Node" + event.getSourceNodeId()+"
"+event.getEventType());
+ if (event.getEventType() == NdbLogEventType.NDB_LE_TransReportCounters) {
+ TransReportCountersEvent theEvent = new TransReportCountersEvent(event);
System.out.println("Trans count:"+theEvent.getTransCount());
System.out.println("Read count:"+theEvent.getReadCount());
System.out.println("Scan count:"+theEvent.getScanCount());
System.out.println("Range Scan count:"+theEvent.getRangeScanCount());
- } else if (event.getType() == NdbLogEventType.NDB_LE_MemoryUsage) {
- MemoryUsageEvent theEvent = new MemoryUsageEvent(event.getEvent());
+ } else if (event.getEventType() == NdbLogEventType.NDB_LE_MemoryUsage) {
+ MemoryUsageEvent theEvent = new MemoryUsageEvent(event);
if (theEvent.getPageSizeKb() == 8192) {
- //System.out.println("Index Memory: "+theEvent.getPagesUsed());
+ System.out.println("Index Memory: "+theEvent.getPagesUsed());
} else if (theEvent.getPageSizeKb() == 32768) {
- //System.out.println("Data Memory: "+theEvent.getPagesUsed());
+ System.out.println("Data Memory: "+theEvent.getPagesUsed());
}
@@ -51,3 +56,31 @@
}
}
+
+class TransReportListener extends NdbLogEventTypeListener {
+
+
+
+ /* (non-Javadoc)
+ * @see com.mysql.cluster.mgmj.NdbLogEventTypeListener#getEventType()
+ */
+ @Override
+ public NdbLogEventType getEventType() {
+ // TODO Auto-generated method stub
+ return NdbLogEventType.NDB_LE_TransReportCounters;
+ }
+
+ /* (non-Javadoc)
+ * @see
com.mysql.cluster.mgmj.NdbLogEventCategoryListener#handleEvent(com.mysql.cluster.mgmj.NdbLogEvent)
+ */
+ @Override
+ public void handleEvent(NdbLogEvent event) {
+ TransReportCountersEvent theEvent = new TransReportCountersEvent(event);
+ System.out.println("Listner Trans count:"+theEvent.getTransCount());
+ System.out.println("Listner Read count:"+theEvent.getReadCount());
+ System.out.println("Listner Scan count:"+theEvent.getScanCount());
+ System.out.println("Listner Range Scan count:"+theEvent.getRangeScanCount());
+ }
+
+
+}
=== modified file 'java/mgmj.i'
--- a/java/mgmj.i 2007-11-19 09:34:49 +0000
+++ b/java/mgmj.i 2007-11-19 23:55:29 +0000
@@ -18,7 +18,7 @@
*/
-%module mgmj
+%module(directors="1") mgmj
/*
%typemap(javaimports) NdbMgmFactory, ndb_mgm_handle, ndb_mgm_cluster_state,
ndb_mgm_node_state "import com.mysql.cluster.errors.*;"
@@ -46,12 +46,12 @@
$result=$1->theEvent;
}
//%typemap(jtype) (BaseEventWrapper *) "BaseEvent";
-%typemap(jstype) (BaseEventWrapper *) "BaseEvent";
-%typemap(jni) (BaseEventWrapper *) "BaseEvent *";
+%typemap(jstype) (BaseEventWrapper *) "NdbLogEvent";
+%typemap(jni) (BaseEventWrapper *) "ndb_logevent *";
%typemap(javaout) (BaseEventWrapper *) {
long cPtr = $jnicall;
- return (cPtr == 0) ? null : new BaseEvent(cPtr,true);
+ return (cPtr == 0) ? null : new NdbLogEvent(cPtr,true);
}
%typemap(newfree) (BaseEventWrapper *) "free($1);";
/*
| Thread |
|---|
| • Rev 230: Merged in handler changes. in http://bazaar.launchpad.net/~ndb-connectors/ndb-connectors/telco-6.3 | Monty Taylor | 20 Nov |