1 message in com.mysql.lists.ndb-connectorsRev 202: Merged in tons of changes fr...
FromSent OnAttachments
Monty Taylor31 Oct 2007 08:06 
Subject:Rev 202: Merged in tons of changes from the devel line so I can start working on distribution keys. in http://bazaar.launchpad.net/~ndb-connectors/ndb-connectors/telco-6.3
From:Monty Taylor (mtay@mysql.com)
Date:10/31/2007 08:06:59 AM
List:com.mysql.lists.ndb-connectors

At http://bazaar.launchpad.net/~ndb-connectors/ndb-connectors/telco-6.3

------------------------------------------------------------ revno: 202 revision-id: mtay@mysql.com-20071031150703-v6mnbb8tqwkxnzoh parent: mtay@mysql.com-20071030125523-pimb9wbi8j43trp0 parent: mtay@mysql.com-20071031150437-0oalw0ar81ae8kkg committer: Monty Taylor <mtay@mysql.com> branch nick: telco-6.3 timestamp: Wed 2007-10-31 15:07:03 +0000 message: Merged in tons of changes from the devel line so I can start working on
distribution keys. added: java/testsuite/ndbj/ImmediatePollTimeoutTest.java
immediatepolltimeout-20071030180642-3bfrv97t3q8mc2m6-1 renamed: java/com/mysql/cluster/ndbj/INdbCallable.java =>
java/com/mysql/cluster/ndbj/BaseCallback.java
indbcallable.java-20070913212805-mw0t23qijtyjad85-1 modified: configure.in configure.in-20070228020914-u2pk759xg7thauwf-13 java/build.xml build.xml-20070521233115-yg3ylf2k3vuzr27o-1 java/com/mysql/cluster/ndbj/NdbTransaction.java
ndbtransaction.java-20070517181935-98huwjarzuh25b30-27 java/com/mysql/cluster/ndbj/examples/TestEvent.java
testevent.java-20071026232217-5tigfbdmcudrnbbx-1 java/ndbj.i ndbj.i-20070913223244-5938mztpztyn9sry-1 swig/NdbTransaction.i
ndbtransaction.i-20070227184716-ecjyhh3jgvmye4de-7 swig/ndbglobals.i globals.i-20070228021421-qkr4cbpxymyqdrf3-7 java/com/mysql/cluster/ndbj/BaseCallback.java
indbcallable.java-20070913212805-mw0t23qijtyjad85-1 ------------------------------------------------------------ revno: 192.1.25.1.10 revision-id: mtay@mysql.com-20071031150437-0oalw0ar81ae8kkg parent: mtay@mysql.com-20071030191945-5qcj6yt5s93n0d3n committer: Monty Taylor <mtay@mysql.com> branch nick: ndbjmerge timestamp: Wed 2007-10-31 15:04:37 +0000 message: Removed directors based callback. Implemented a new callback mechanism by
hand. renamed: java/com/mysql/cluster/ndbj/INdbCallable.java =>
java/com/mysql/cluster/ndbj/BaseCallback.java
indbcallable.java-20070913212805-mw0t23qijtyjad85-1 modified: java/build.xml build.xml-20070521233115-yg3ylf2k3vuzr27o-1 java/com/mysql/cluster/ndbj/NdbTransaction.java
ndbtransaction.java-20070517181935-98huwjarzuh25b30-27 java/ndbj.i ndbj.i-20070913223244-5938mztpztyn9sry-1 swig/NdbTransaction.i
ndbtransaction.i-20070227184716-ecjyhh3jgvmye4de-7 swig/ndbglobals.i globals.i-20070228021421-qkr4cbpxymyqdrf3-7 java/com/mysql/cluster/ndbj/BaseCallback.java
indbcallable.java-20070913212805-mw0t23qijtyjad85-1 ------------------------------------------------------------ revno: 192.1.25.1.9 revision-id: mtay@mysql.com-20071030191945-5qcj6yt5s93n0d3n parent: mtay@mysql.com-20071030191927-p6dufvx38xojxupb parent: mtay@mysql.com-20071030191706-8117iz5wkhvdkzq5 committer: Monty Taylor <mtay@mysql.com> branch nick: ndbjmerge timestamp: Tue 2007-10-30 19:19:45 +0000 message: Merging changes. added: java/testsuite/ndbj/ImmediatePollTimeoutTest.java
immediatepolltimeout-20071030180642-3bfrv97t3q8mc2m6-1 ------------------------------------------------------------ revno: 192.1.32 revision-id: mtay@mysql.com-20071030191706-8117iz5wkhvdkzq5 parent: mtay@mysql.com-20071030181600-bfoohpcfauqzfgc1 parent: root@localhost.localdomain-20071030180646-hxxj07l6pc878r6x committer: Monty Taylor <mtay@mysql.com> branch nick: devel timestamp: Tue 2007-10-30 19:17:06 +0000 message: Merged in new test from David Shepherd for testing
ImmediatePollTimeout added: java/testsuite/ndbj/ImmediatePollTimeoutTest.java
immediatepolltimeout-20071030180642-3bfrv97t3q8mc2m6-1 ------------------------------------------------------------ revno: 192.1.30.1.1 revision-id:
root@localhost.localdomain-20071030180646-hxxj07l6pc878r6x parent: mtay@mysql.com-20071030120251-1v2a5hi9jxxd3cx4 committer: root <root@localhost.localdomain> branch nick: work timestamp: Tue 2007-10-30 18:06:46 +0000 message: h added: java/testsuite/ndbj/ImmediatePollTimeoutTest.java
immediatepolltimeout-20071030180642-3bfrv97t3q8mc2m6-1 ------------------------------------------------------------ revno: 192.1.31 revision-id: mtay@mysql.com-20071030181600-bfoohpcfauqzfgc1 parent: mtay@mysql.com-20071030120251-1v2a5hi9jxxd3cx4 parent: mtay@mysql.com-20071030180531-nuqhuahe52h9foib committer: Monty Taylor <mtay@mysql.com> branch nick: devel timestamp: Tue 2007-10-30 18:16:00 +0000 message: Merged in changes for async timing. modified: configure.in
configure.in-20070228020914-u2pk759xg7thauwf-13 java/com/mysql/cluster/ndbj/examples/TestEvent.java
testevent.java-20071026232217-5tigfbdmcudrnbbx-1 java/ndbj.i
ndbj.i-20070913223244-5938mztpztyn9sry-1 swig/NdbTransaction.i
ndbtransaction.i-20070227184716-ecjyhh3jgvmye4de-7 swig/ndbglobals.i
globals.i-20070228021421-qkr4cbpxymyqdrf3-7 ------------------------------------------------------------ revno: 192.1.25.1.8 revision-id: mtay@mysql.com-20071030191927-p6dufvx38xojxupb parent: mtay@mysql.com-20071030180531-nuqhuahe52h9foib committer: Monty Taylor <mtay@mysql.com> branch nick: ndbjmerge timestamp: Tue 2007-10-30 19:19:27 +0000 message: Merging changes. modified: swig/ndbglobals.i globals.i-20070228021421-qkr4cbpxymyqdrf3-7 ------------------------------------------------------------ revno: 192.1.25.1.7 revision-id: mtay@mysql.com-20071030180531-nuqhuahe52h9foib parent: mtay@mysql.com-20071030180407-xv0cv62hsdo34xfs committer: Monty Taylor <mtay@mysql.com> branch nick: ndbjmerge timestamp: Tue 2007-10-30 18:05:31 +0000 message: Fix to make Johan happy. modified: swig/ndbglobals.i globals.i-20070228021421-qkr4cbpxymyqdrf3-7 ------------------------------------------------------------ revno: 192.1.25.1.6 revision-id: mtay@mysql.com-20071030180407-xv0cv62hsdo34xfs parent: mtay@mysql.com-20071030120214-0cx1lq342erqp99h committer: Monty Taylor <mtay@mysql.com> branch nick: ndbjmerge timestamp: Tue 2007-10-30 18:04:07 +0000 message: Added timing to async callbacks. modified: configure.in
configure.in-20070228020914-u2pk759xg7thauwf-13 java/com/mysql/cluster/ndbj/examples/TestEvent.java
testevent.java-20071026232217-5tigfbdmcudrnbbx-1 java/ndbj.i ndbj.i-20070913223244-5938mztpztyn9sry-1 swig/NdbTransaction.i
ndbtransaction.i-20070227184716-ecjyhh3jgvmye4de-7 swig/ndbglobals.i globals.i-20070228021421-qkr4cbpxymyqdrf3-7 === added file 'java/testsuite/ndbj/ImmediatePollTimeoutTest.java' --- a/java/testsuite/ndbj/ImmediatePollTimeoutTest.java 1970-01-01 00:00:00
+0000 +++ b/java/testsuite/ndbj/ImmediatePollTimeoutTest.java 2007-10-30 18:06:46
+0000 @@ -0,0 +1,180 @@ +package testsuite.ndbj; + +import java.util.*; + +import testsuite.BaseNdbjTestCase; +import com.mysql.cluster.ndbj.*; + +public class ImmediatePollTimeoutTest extends BaseNdbjTestCase { + + static boolean alreadySetUp = false; + static long ourTotalTransactionCount = 0; + static long ourOutstandingTransactionCount = 0; + static long ourCallbackCount = 0; + +
/////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // GENERAL STUFF +
/////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + static int MAXIMUM_OPERATION_VOLUME = 300; // TO DO: Calculate this + + static int NUMBER_OF_ELEMENT_INSERTIONS = 50; + + static int NUM_REQUEST_TRANSACTIONS = 2; + static int REQUEST_TRANSACTIONS_TIMEOUT = 0; + + static int FORCE_SEND = 1; + + static boolean USE_SYNCHRONOUS = false; + +
/////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // TABLE METADATA +
/////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + static String tablename = "t_immediatepolltimeouttest"; + +
/////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // INITIALISATION CODE +
/////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + + public ImmediatePollTimeoutTest(String arg0) { + super(arg0); + } + + public void setUp() throws Exception { + super.setUp(); + + if (!alreadySetUp) { + // Create required tables + + System.out.print("Creating tables..."); + + this.createTable(tablename, + " (ATTR1 INT UNSIGNED auto_increment not null," + + " ATTR2 INT UNSIGNED NOT NULL," + + " PRIMARY KEY (ATTR1) )" + + " ENGINE=NDBCLUSTER"); + + System.out.println("done."); + + System.out.print("Storing column indices..."); + System.out.println("done."); + + alreadySetUp = true; + } + } + + public void tearDown() throws Exception { + super.tearDown(); + } + +
/////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // TEST CODE +
/////////////////////////////////////////////////////////////////////////////////////////////////////////////// + + public void testOperation() { + + HashMap<Integer,BaseCallback> hash=new HashMap<Integer,BaseCallback>(); + + try { + for (int loop = 0; + loop < 100; + loop++) { + // Process request transaction + + NdbOperation orderOp; + BaseCallback callback; + + for (int elementCount = 0; + elementCount < NUMBER_OF_ELEMENT_INSERTIONS; + elementCount++) { + int id = (NUMBER_OF_ELEMENT_INSERTIONS * loop) + elementCount; + + trans = ndb.startTransaction(); + orderOp = trans.getNdbOperation(tablename); + orderOp.insertTuple(); + orderOp.equalInt("ATTR1", id); + orderOp.setInt("ATTR2", id); + + callback = new MyCallback(hash, id, ndb, orderOp.resultData()); + hash.put(callback.hashCode(), callback); + + trans.executeAsynchPrepare(ExecType.Commit, + callback, + AbortOption.AbortOnError); + + ourOutstandingTransactionCount++; + } + + ourCallbackCount = 0; + + ndb.sendPreparedTransactions(FORCE_SEND); + + long then = System.nanoTime(); + ndb.pollNdb(REQUEST_TRANSACTIONS_TIMEOUT); + long now = System.nanoTime(); + + ourOutstandingTransactionCount = ourOutstandingTransactionCount -
ourCallbackCount; + System.out.println("Poll took " + (now - then) + " nanos (" +
ourCallbackCount + + " txs received) [" + ourOutstandingTransactionCount + " outstanding]"); + } + + System.out.println("Performing cooldown"); + + ourCallbackCount = 0; + + long then = System.nanoTime(); + ndb.pollNdb(100000,100000); + long now = System.nanoTime(); + + ourOutstandingTransactionCount = ourOutstandingTransactionCount -
ourCallbackCount; + System.out.println("Closedown poll took " + (now - then) + " nanos (" +
ourCallbackCount + + " txs received) [" + ourOutstandingTransactionCount + " outstanding]"); + } + catch (NdbApiException e) { + System.out.println("Caught NdbApiException in Insert:\t" + e.getMessage()); + e.printStackTrace(); + assertFalse(true); + } + finally { + // Do something ;o) + } + } + + class HashCallback extends BaseCallback { + + + int myCallbackNum; + Ndb myNdb; + NdbResultSet myResults; + HashMap<Integer, BaseCallback> myMap; + + public HashCallback(HashMap<Integer, BaseCallback> theMap, int
theCallbackNum, Ndb theNdb, NdbResultSet theResults) { + myMap = theMap; + myCallbackNum = theCallbackNum; + myNdb = theNdb; + myResults = theResults; + } + + public void callback(int res, NdbTransactionImpl trans) { + + if (res!=0)
System.out.println("HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHASSSSSSSSSSSSSSSSSSSSHHH"); + + trans.close(); + myMap.remove(this.hashCode()); + + ourCallbackCount++; + } + + } + + class MyCallback extends HashCallback { + + public MyCallback(HashMap<Integer, BaseCallback> theMap,int
theCallbackNum, Ndb theNdb, NdbResultSet theResults) { + super(theMap, theCallbackNum, theNdb, theResults); + } + + } + +}

=== renamed file 'java/com/mysql/cluster/ndbj/INdbCallable.java' =>
'java/com/mysql/cluster/ndbj/BaseCallback.java' --- a/java/com/mysql/cluster/ndbj/INdbCallable.java 2007-09-30 02:06:41 +0000 +++ b/java/com/mysql/cluster/ndbj/BaseCallback.java 2007-10-31 15:04:37 +0000 @@ -1,8 +1,41 @@ package com.mysql.cluster.ndbj;

- -public interface INdbCallable { - - void callback(int result, NdbTransaction myTrans); - +import com.mysql.cluster.ndbj.ndbjJNI; + +public class BaseCallback { + + private long create_time; + private long start_time; + private long end_time; + + public BaseCallback() { + create_time = 0; + start_time = 0; + end_time = 0; + } + + protected final void jni_call_callback(int result, long transPtr, long
create_time) { + this.create_time = create_time; + this.start_time = this.getMicroTime(); + this.callback(result,new NdbTransactionImpl(transPtr,false)); + this.end_time = this.getMicroTime(); + }; + + public void callback(int result, NdbTransaction myTrans) {} + + public final long getMicroTime() { + return ndbjJNI.getMicroTime(); + } + + public final long getElapsedTime() { + return this.getMicroTime() - this.create_time; + } + + public final long getExecuteTime() { + return this.end_time - this.create_time; + } + + public final long getCallbackTime() { + return this.end_time - this.start_time; + } };

=== modified file 'configure.in' --- a/configure.in 2007-10-28 00:17:55 +0000 +++ b/configure.in 2007-10-30 18:04:07 +0000 @@ -6,6 +6,18 @@ [ --with-debug Build a debugging version], [with_debug=$withval], [with_debug=no]) + +AC_ARG_WITH([async-time], + [AS_HELP_STRING([--with-async-time], + [Produce timing reports for Async transactions @<:@default=no@:>@])], + [with_asynctime=$withval], + [with_asynctime=no]) + +AS_IF([test "x$with_asynctime" = "xyes"], + [AC_DEFINE([DEBUG_ASYNC_TIMES],1, + [Define to 1 if you want to profile async callbacks])], + []) + if test "$with_debug" = "yes" then CXXFLAGS="-ggdb3 -Wall"

=== modified file 'java/build.xml' --- a/java/build.xml 2007-10-29 15:26:44 +0000 +++ b/java/build.xml 2007-10-31 15:04:37 +0000 @@ -48,7 +48,6 @@ <fileset dir="com/mysql/cluster/mgmj" includes="NdbMgmSeverity.java" /> <fileset dir="com/mysql/cluster/ndbj" includes="NdbColumn.java" /> <fileset dir="com/mysql/cluster/ndbj" includes="AbortOption.java" /> - <fileset dir="com/mysql/cluster/ndbj" includes="BaseCallback.java" /> <fileset dir="com/mysql/cluster/ndbj" includes="ExecType.java" /> <fileset dir="com/mysql/cluster/ndbj" includes="NdbDictionary.java" /> <fileset dir="com/mysql/cluster/ndbj" includes="NdbEvent.java" />

=== modified file 'java/com/mysql/cluster/ndbj/NdbTransaction.java' --- a/java/com/mysql/cluster/ndbj/NdbTransaction.java 2007-10-05 18:18:53 +0000 +++ b/java/com/mysql/cluster/ndbj/NdbTransaction.java 2007-10-31 15:04:37 +0000 @@ -147,9 +147,6 @@ public int execute(ExecType execType, AbortOption abortOption) throws
NdbApiException; public int execute(ExecType execType) throws NdbApiException;

- public void executeAsynchPrepare(ExecType execType, BaseCallback cb, - AbortOption abortOption); - public void executeAsynchPrepare(ExecType execType, BaseCallback cb); /** * Creates a NdbOperationRef (primary key operation) and adds it to the
transaction. * @param tableName name of the schema @@ -257,17 +254,17 @@ * @param cb * @param abortOption * @see NdbTransactionRef#executeAsynchPrepare(ExecTypeRef, - * INdbCallable, + * BaseCallback, * AbortOptionRef) */ - public void executeAsynchPrepare(ExecType execType, INdbCallable cb,
AbortOption abortOption); + public void executeAsynchPrepare(ExecType execType, BaseCallback cb,
AbortOption abortOption); /** * @param execType * @param cb * @see NdbTransactionRef#executeAsynchPrepare(ExecTypeRef, - * INdbCallable) + * BaseCallback) */ - public void executeAsynchPrepare(ExecType execType, INdbCallable cb); + public void executeAsynchPrepare(ExecType execType, BaseCallback cb); public NdbOperationImpl getNdbOperation(NdbTable aTable) throws
NdbApiException; public NdbIndexScanOperationImpl getNdbIndexScanOperation(NdbIndex anIndex,
NdbTable aTable) throws NdbApiException; public NdbIndexOperationImpl getNdbIndexOperation(NdbIndex anIndex, NdbTable
aTable) throws NdbApiException;

=== modified file 'java/com/mysql/cluster/ndbj/examples/TestEvent.java' --- a/java/com/mysql/cluster/ndbj/examples/TestEvent.java 2007-10-28 00:05:03
+0000 +++ b/java/com/mysql/cluster/ndbj/examples/TestEvent.java 2007-10-30 18:04:07
+0000 @@ -89,6 +89,8 @@ } NdbResultSet theResultSet = eop.resultData(); NdbResultSet preResultSet = eop.preResultData(); + +

System.out.println("done");

=== modified file 'java/ndbj.i' --- a/java/ndbj.i 2007-10-30 12:55:23 +0000 +++ b/java/ndbj.i 2007-10-31 15:07:03 +0000 @@ -17,7 +17,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */

-%module(directors="1") ndbj +%module ndbj

%rename NdbBlob NdbBlobImpl; @@ -37,7 +37,6 @@ %include "various.i" %include "enums.swg"

-%include "config.h"

%{ #include <stdio.h> @@ -46,58 +45,39 @@ asynch_callback_t { JNIEnv *env; - jobject obj; -}; - -typedef struct -event_callback_t -{ - JNIEnv *env; - jobject obj; -}; - - -static void JavaCallBack(int result, + jobject obj; + long long create_time; +}; + + + +static void theCallBack(int result, NdbTransaction *trans, void *aObject) {

asynch_callback_t * callback_data = (asynch_callback_t *)aObject;

- JNIEnv *env = callback_data->env; - - jclass callablecls = env->GetObjectClass((callback_data->obj)); - - jmethodID mid = env->GetMethodID(callablecls, "callback",
"(ILNdbTransaction;)V"); - if (mid == NULL) { - jclass clazz = env->FindClass("java/lang/RuntimeException"); - env->ThrowNew(clazz,"No callback method!"); - } - - env->CallVoidMethod(callback_data->obj,mid,(jlong)result,trans); - -} - -static void EventCallBack(NdbEventOperation *theOp, - Ndb *theNdb, - void *aObject) -{ - - event_callback_t * callback_data = (event_callback_t *)aObject; - - JNIEnv *env = callback_data->env; - - jclass callablecls = env->GetObjectClass((callback_data->obj)); - - jmethodID mid = env->GetMethodID(callablecls, "callback", "(ILNdb;)V"); - if (mid == NULL) { - jclass clazz = env->FindClass("java/lang/RuntimeException"); - env->ThrowNew(clazz,"No callback method!"); - } - - env->CallVoidMethod(callback_data->obj,mid,theOp,theNdb); - -} + JNIEnv *jenv = callback_data->env; +// printf("Running callback: env == %p .. callback_data->obj ==
%p\n",jenv,callback_data->obj); + + jclass callablecls = jenv->GetObjectClass((callback_data->obj)); + + // printf("\tcallablecls: %p\n",callablecls); + jmethodID mid = jenv->GetMethodID(callablecls, "jni_call_callback","(IJJ)V"); + + //jmethodID mid = jenv->GetMethodID(callablecls, "callback",
"(ILNdbTransaction;)V"); + //printf("\tmid: %p\n",mid); + if ((mid == NULL) || (mid == 0)) { + jenv->DeleteGlobalRef(callback_data->obj); + jclass clazz = jenv->FindClass("java/lang/RuntimeException"); + jenv->ThrowNew(clazz,"No callback method!"); + } + +
jenv->CallVoidMethod(callback_data->obj,mid,(jlong)result,trans,callback_data->create_time); + jenv->DeleteGlobalRef(callback_data->obj); +} +

#define NDB_exception(excp, msg) { ndb_throw_exception(jenv, #excp,msg); } #define NDB_exception_err(excp, msg, err) { ndb_throw_exception(jenv,
#excp,msg, err); } @@ -144,17 +124,17 @@

%typemap(in) asynch_callback_t * cb %{ - asynch_callback_t * callback_data; - callback_data = new asynch_callback_t; - callback_data->env = jenv; - callback_data->obj = $input; - - $1 = callback_data; + $1 = new asynch_callback_t; + $1->env = jenv; + $1->obj = jenv->NewGlobalRef($input); + $1->create_time = 0; +// jclass callablecls = jenv->GetObjectClass(($1->obj)); +// printf("Registering callback: env==%p .. obj==%p ..
callbackcls==%p\n",jenv,$1->obj,callablecls); %}

%typemap(in) event_callback_t * cb %{ - event_callback_t * callback_data; + callback_data = new event_callback_t; callback_data->env = jenv; callback_data->obj = $input; @@ -164,14 +144,9 @@

%typemap(jni) asynch_callback_t * "jobject" %typemap(jtype) asynch_callback_t * "Object" -%typemap(jstype) asynch_callback_t * "INdbCallable" +%typemap(jstype) asynch_callback_t * "BaseCallback" %typemap(javain) asynch_callback_t * "(Object)$javainput"

-%typemap(jni) event_callback_t * "jobject" -%typemap(jtype) event_callback_t * "Object" -%typemap(jstype) event_callback_t * "INdbEventCallable" -%typemap(javain) event_callback_t * "(Object)$javainput" - %typemap(jtype) voidint "void"; %typemap(jstype) voidint "void"; %typemap(javaout) voidint { @@ -446,10 +421,6 @@

%extend NdbTransaction {

- void executeAsynchPrepare(ExecType execType, asynch_callback_t * cb,
AbortOption abortOption = AbortOnError){ - self->executeAsynchPrepare(execType,JavaCallBack,(void *)cb, abortOption); - - } };

%typemap(javainterfaces) NdbOperation "NdbOperation,NdbInterpretedOperation";

=== modified file 'swig/NdbTransaction.i' --- a/swig/NdbTransaction.i 2007-10-23 05:12:33 +0000 +++ b/swig/NdbTransaction.i 2007-10-31 15:04:37 +0000 @@ -133,12 +133,12 @@ } */ %ndbnoexception - void executeAsynchPrepare(ExecType execType, - BaseCallback * cb, - AbortOption abortOption = AbortOnError) { - self->executeAsynchPrepare(execType,theNdbCallback,(void
*)cb,abortOption); - };

+ void executeAsynchPrepare(ExecType execType, asynch_callback_t * cb,
AbortOption abortOption = AbortOnError){ + cb->create_time=getMicroTime(); + self->executeAsynchPrepare(execType,theCallBack,(void *)cb, abortOption); + + }

%ndbexception("NdbApiException") { $action

=== modified file 'swig/ndbglobals.i' --- a/swig/ndbglobals.i 2007-10-30 12:02:14 +0000 +++ b/swig/ndbglobals.i 2007-10-31 15:04:37 +0000 @@ -18,6 +18,7 @@ */

%include "globals.i" +%include "config.h"

%{ #include <my_global.h> @@ -25,40 +26,20 @@

#include <mysql.h> #include <NdbApi.hpp> + +#undef PACKAGE +#undef PACKAGE_NAME +#undef PACKAGE_STRING +#undef PACKAGE_TARNAME +#undef PACKAGE_VERSION +#undef VERSION + +#include "config.h" + //#include <m_ctype.h>

- class BaseCallback { - - public: - virtual ~BaseCallback() {}; - virtual void callback(int res, NdbTransaction * trans) { - printf("In BaseCallback::callback. Return Value: %d. Transaction:
%p\n",res,trans); - } - - }; - - void theNdbCallback(int ret, NdbTransaction * trans, void * anyObject) { - BaseCallback * cb = (BaseCallback *)anyObject; - cb->callback(ret, trans); - } - - class BaseEventCallback { - - public: - virtual ~BaseEventCallback() {}; - virtual void callback(NdbEventOperation *theOp, Ndb *theNdb) { - printf("In BaseEventCallback::callback.\n\tOperation: %p\n\tNdb: %p\n", - theOp,theNdb); - } - }; - - - void theNdbEventCallback(NdbEventOperation * theOp, Ndb * theNdb, void *
anyObject) { - BaseEventCallback * cb = (BaseEventCallback *)anyObject; - cb->callback(theOp,theNdb); - } - - long long getTimeMicros() + + long long getMicroTime() { struct timeval tTime; gettimeofday(&tTime, 0); @@ -67,6 +48,7 @@ }

+ typedef int voidint; typedef Uint32 NdbTimestamp;

@@ -82,7 +64,7 @@ } BYTES; %}

-long long getTimeMicros(); +long long getMicroTime(); /* typedef char my_bool; enum enum_mysql_timestamp_type @@ -134,21 +116,3 @@ typedef Uint32 NdbTimestamp;

-%feature("director") BaseCallback; - -class BaseCallback { - virtual ~BaseCallback() {}; - public: - virtual void callback(int res, NdbTransaction * trans); - -}; - -%feature("director") BaseEventCallback; - -class BaseEventCallback { - - public: - virtual ~BaseEventCallback() {}; - virtual void callback(NdbEventOperation *theOp, Ndb *theNdb); -}; -