[jboss-cvs] JBoss Messaging SVN: r3733 - projects/jaio/trunk/jaio/native/src.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Feb 18 15:05:24 EST 2008
Author: clebert.suconic at jboss.com
Date: 2008-02-18 15:05:24 -0500 (Mon, 18 Feb 2008)
New Revision: 3733
Added:
projects/jaio/trunk/jaio/native/src/JAIODatatypes.h
Modified:
projects/jaio/trunk/jaio/native/src/AIOController.h
projects/jaio/trunk/jaio/native/src/BufferAdapter.h
projects/jaio/trunk/jaio/native/src/DataManager.h
projects/jaio/trunk/jaio/native/src/FileOutput.cpp
projects/jaio/trunk/jaio/native/src/FileOutput.h
projects/jaio/trunk/jaio/native/src/JNIBufferAdapter.cpp
projects/jaio/trunk/jaio/native/src/JNIBufferAdapter.h
projects/jaio/trunk/jaio/native/src/LibAIOController.cpp
projects/jaio/trunk/jaio/native/src/Makefile.am
projects/jaio/trunk/jaio/native/src/PageManager.cpp
projects/jaio/trunk/jaio/native/src/PageManager.h
projects/jaio/trunk/jaio/native/src/PageObserver.h
Log:
Fixing multi-thread and polling events
Modified: projects/jaio/trunk/jaio/native/src/AIOController.h
===================================================================
--- projects/jaio/trunk/jaio/native/src/AIOController.h 2008-02-18 15:21:32 UTC (rev 3732)
+++ projects/jaio/trunk/jaio/native/src/AIOController.h 2008-02-18 20:05:24 UTC (rev 3733)
@@ -1,8 +1,8 @@
#ifndef AIOCONTROLLER_H_
#define AIOCONTROLLER_H_
#include <jni.h>
-
#include <string>
+#include "JAIODatatypes.h"
#include "FileOutput.h"
#include "DataManager.h"
@@ -16,7 +16,6 @@
jmethodID error;
int fileHandle;
- JNIEnv * env;
FileOutput fileOutput;
// It could be Paging or Direct File output
Modified: projects/jaio/trunk/jaio/native/src/BufferAdapter.h
===================================================================
--- projects/jaio/trunk/jaio/native/src/BufferAdapter.h 2008-02-18 15:21:32 UTC (rev 3732)
+++ projects/jaio/trunk/jaio/native/src/BufferAdapter.h 2008-02-18 20:05:24 UTC (rev 3733)
@@ -2,11 +2,16 @@
#define BUFFERADAPTER_H_
#include <iostream>
+
+#include "JAIODatatypes.h"
+
class BufferAdapter
{
private:
// The number of pages that are expected to be used by this Buffer
int blocks;
+
+ virtual void destroy(THREAD_CONTEXT threadContext) = 0;
public:
BufferAdapter() : blocks(1)
{
@@ -20,7 +25,6 @@
void setBlocks(int _blocks)
{
blocks = _blocks;
- std::cout << "blocks = " << blocks << "\n";
}
void addBlock()
@@ -29,20 +33,20 @@
blocks++;
}
- void completeBlock()
+ void completeBlock(THREAD_CONTEXT threadContext)
{
// TODO: Do I need to mutex here?
if (--blocks <= 0)
{
- done();
+ done(threadContext);
}
}
- virtual void addref() = 0;
- virtual void deleteRef() = 0;
- virtual void encode(const int& size, void *) = 0;
- virtual void done() = 0;
- virtual int blockSize() = 0;
- virtual void onError(long error, std::string error)=0;
+ virtual void addref(THREAD_CONTEXT threadContext) = 0;
+ virtual void deleteRef(THREAD_CONTEXT threadContext) = 0;
+ virtual void encode(THREAD_CONTEXT threadContext, const int& size, void *) = 0;
+ virtual void done(THREAD_CONTEXT threadContext) = 0;
+ virtual int blockSize(THREAD_CONTEXT threadContext) = 0;
+ virtual void onError(THREAD_CONTEXT threadContext, long error, std::string error)=0;
};
#endif /*BUFFERADAPTER_H_*/
Modified: projects/jaio/trunk/jaio/native/src/DataManager.h
===================================================================
--- projects/jaio/trunk/jaio/native/src/DataManager.h 2008-02-18 15:21:32 UTC (rev 3732)
+++ projects/jaio/trunk/jaio/native/src/DataManager.h 2008-02-18 20:05:24 UTC (rev 3733)
@@ -2,15 +2,16 @@
#define DATAMANAGER_H_
#include "BufferAdapter.h"
+#include "JAIODatatypes.h"
class DataManager
{
public:
DataManager();
virtual ~DataManager();
- virtual void addData(BufferAdapter * adapter) = 0;
- virtual void validateLowRate() = 0;
- virtual void pollEvents() = 0;
+ virtual void addData(THREAD_CONTEXT threadContext, BufferAdapter * adapter) = 0;
+ virtual void validateLowRate(THREAD_CONTEXT threadContext) = 0;
+ virtual void pollEvents(THREAD_CONTEXT threadContext) = 0;
};
#endif /*DATAMANAGER_H_*/
Modified: projects/jaio/trunk/jaio/native/src/FileOutput.cpp
===================================================================
--- projects/jaio/trunk/jaio/native/src/FileOutput.cpp 2008-02-18 15:21:32 UTC (rev 3732)
+++ projects/jaio/trunk/jaio/native/src/FileOutput.cpp 2008-02-18 20:05:24 UTC (rev 3733)
@@ -28,17 +28,15 @@
}
-FileOutput::FileOutput(std::string & _fileName) : aioContext(0), filePointer(0), events(0)
+FileOutput::FileOutput(std::string & _fileName) : aioContext(0), filePointer(0), events(0), added(0), received(0)
{
::pthread_mutex_init(&fileMutex,0);
fileName = _fileName;
- std::cout << "Initializing FileOutput " << aioContext << "\n";
if (io_queue_init(MAX_IO, &aioContext))
{
throw AIOException(1, "Can't initialize aio");
}
- std::cout << "Initialized " << aioContext << "\n";
-
+
#ifdef SYNC
fileHandle = open(fileName.data(), O_WRONLY | O_CREAT, 0666);
#else
@@ -66,20 +64,20 @@
}
}
-void FileOutput::completePage(long size, void * page, std::list<BufferAdapter *> * adapters)
+void FileOutput::completePage(THREAD_CONTEXT threadContext, long size, void * page, std::list<BufferAdapter *> * adapters)
{
::write(fileHandle, page, size);
for (std::list<BufferAdapter *>::iterator iter = adapters->begin(); iter != adapters->end(); iter++)
{
- (*iter)->completeBlock();
- (*iter)->deleteRef();
+ (*iter)->completeBlock(threadContext);
+ (*iter)->deleteRef(threadContext);
}
free (page);
delete adapters;
}
-void FileOutput::callbackDirect(io_context_t ctx, struct iocb *iocb, long res, long res2)
+/*void FileOutput::callbackDirect(io_context_t ctx, struct iocb *iocb, long res, long res2)
{
if (res<0 || res2<0)
{
@@ -92,27 +90,28 @@
memcpy (&buffer, ((char *) iocb->u.c.buf)+iocb->u.c.nbytes, sizeof (BufferAdapter *));
- buffer->completeBlock();
+// buffer->completeBlock();
free (iocb->u.c.buf);
free (iocb);
- buffer->deleteRef();
+// buffer->deleteRef();
-}
+}*/
-void FileOutput::pollEvents()
+void FileOutput::pollEvents(THREAD_CONTEXT threadContext)
{
#ifndef SYNC
LockClass lock(&fileMutex);
int result = io_getevents(this->aioContext,0, MAX_IO, events, 0);
-
- if (result)
+
+ if (result)
{
- std::cout << "poll being caleld result is " << result << "\n";
+ received += result;
+ std::cout << "\nAdded=" << added << " received=" << received << "\n";
std::cout.flush();
}
-
+
if (result < 0)
{
// no results
@@ -132,22 +131,21 @@
std::list<BufferAdapter *> * list = (std::list<BufferAdapter *> *)(iocbp->data);
- std::cout << "Recovered data = " << ((long)iocbp->data) << "\n";
- std::cout.flush();
long result = events[i].res;
if (result < 0)
{
std::string strerror = io_error(result);
for (std::list<BufferAdapter *>::iterator iter = list->begin(); iter != list->end(); iter ++)
{
- (*iter)->onError(result, strerror);
+ (*iter)->onError(threadContext, result, strerror);
}
}
else
{
for (std::list<BufferAdapter *>::iterator iter = list->begin(); iter != list->end(); iter ++)
{
- (*iter)->completeBlock();
+ (*iter)->completeBlock(threadContext);
+ (*iter)->deleteRef(threadContext);
}
}
@@ -159,14 +157,17 @@
}
// Used only when Paging is disabled (as the user have this option to opt out for Paging)
-void FileOutput::addData(BufferAdapter * adapter)
+void FileOutput::addData(THREAD_CONTEXT threadContext, BufferAdapter * adapter)
{
+ int size = adapter->blockSize(threadContext);
+
LockClass lock(&fileMutex);
+
+ added++;
- int size = adapter->blockSize();
#ifdef SYNC
- void * buffer = malloc(size + sizeof (BufferAdapter *));
- adapter->encode(size, buffer);
+ void * buffer = malloc(size);
+ adapter->encode(threadContext, size, buffer);
int error=::write(fileHandle, buffer, size);
if (error<0)
@@ -181,7 +182,8 @@
}
adapter->done();
#else
- void * buffer;
+ void * buffer = 0;
+ //void * buffer = malloc(size + sizeof (BufferAdapter *));
if (posix_memalign(&buffer, 512, size))
{
throw AIOException(10, "Error on posix_memalign");
@@ -190,14 +192,11 @@
std::list<BufferAdapter *> * list = new std::list<BufferAdapter *>();
list->push_back(adapter);
- //void * buffer = malloc(size + sizeof (BufferAdapter *));
- adapter->encode(size, buffer);
- memcpy (((char *)buffer) + size, &adapter, sizeof (adapter));
+ adapter->encode(threadContext, size, buffer);
struct iocb * iocb = new struct iocb();
::io_prep_pwrite(iocb, fileHandle, buffer, size, filePointer);
iocb->data = (void *) list;
- std::cout << "Set data = " << ((long)iocb->data) << "\n";
filePointer+=size;
Modified: projects/jaio/trunk/jaio/native/src/FileOutput.h
===================================================================
--- projects/jaio/trunk/jaio/native/src/FileOutput.h 2008-02-18 15:21:32 UTC (rev 3732)
+++ projects/jaio/trunk/jaio/native/src/FileOutput.h 2008-02-18 20:05:24 UTC (rev 3733)
@@ -1,14 +1,16 @@
#ifndef FILEOUTPUT_H_
#define FILEOUTPUT_H_
-#include "PageObserver.h"
-#include "DataManager.h"
#include <string>
#include <libaio.h>
#include <pthread.h>
-#define MAX_IO 300
+#include "PageObserver.h"
+#include "DataManager.h"
+#include "JAIODatatypes.h"
+#define MAX_IO 3000
+
class FileOutput : public PageObserver, DataManager
{
private:
@@ -20,12 +22,15 @@
pthread_mutex_t fileMutex;
+ int added;
+ int received;
+
public:
FileOutput(std::string & _fileName);
virtual ~FileOutput();
- void completePage(long size, void *, std::list<BufferAdapter *> *);
- void addData(BufferAdapter * adapter);
+ void completePage(THREAD_CONTEXT threadContext, long size, void *, std::list<BufferAdapter *> *);
+ void addData(THREAD_CONTEXT threadContext, BufferAdapter * adapter);
int getHandle()
{
@@ -33,15 +38,12 @@
}
// Nothing to be done on FileOutput
- void pollEvents();
+ void pollEvents(THREAD_CONTEXT threadContext);
- void validateLowRate()
+ void validateLowRate(THREAD_CONTEXT threadContext)
{
}
- static void callbackDirect(io_context_t ctx, struct iocb *iocb, long res, long res2);
-
-
};
#endif /*FILEOUTPUT_H_*/
Added: projects/jaio/trunk/jaio/native/src/JAIODatatypes.h
===================================================================
--- projects/jaio/trunk/jaio/native/src/JAIODatatypes.h (rev 0)
+++ projects/jaio/trunk/jaio/native/src/JAIODatatypes.h 2008-02-18 20:05:24 UTC (rev 3733)
@@ -0,0 +1,10 @@
+#ifndef JAIODATATYPES_H_
+#define JAIODATATYPES_H_
+
+#include <jni.h>
+
+#define THREAD_CONTEXT JNIEnv *&
+#define JNI_ENV(pointer) pointer
+
+
+#endif /*JAIODATATYPES_H_*/
Modified: projects/jaio/trunk/jaio/native/src/JNIBufferAdapter.cpp
===================================================================
--- projects/jaio/trunk/jaio/native/src/JNIBufferAdapter.cpp 2008-02-18 15:21:32 UTC (rev 3732)
+++ projects/jaio/trunk/jaio/native/src/JNIBufferAdapter.cpp 2008-02-18 20:05:24 UTC (rev 3733)
@@ -1,41 +1,44 @@
#include <jni.h>
#include "JNIBufferAdapter.h"
#include <iostream>
+#include "JavaUtilities.h"
JNIBufferAdapter::JNIBufferAdapter(AIOController * _controller, jobject _obj) : BufferAdapter(), refs(1)
{
controller = _controller;
- obj = controller->env->NewGlobalRef(_obj); // restore me
+ obj = _obj;
//obj = _obj; // delete me
}
JNIBufferAdapter::~JNIBufferAdapter()
{
- std::cout << " Deleting globalRef\n";
- controller->env->DeleteGlobalRef(obj); // restore me
}
-void JNIBufferAdapter::encode(const int& size, void * bufferAddress)
+void JNIBufferAdapter::encode(THREAD_CONTEXT threadContext, const int& size, void * bufferAddress)
{
- jobject buffer = controller->env->NewDirectByteBuffer(bufferAddress, size);
- controller->env->CallVoidMethod(obj, controller->encode, buffer);
+ jobject buffer = JNI_ENV(threadContext)->NewDirectByteBuffer(bufferAddress, size);
+ JNI_ENV(threadContext)->CallVoidMethod(obj, controller->encode, buffer);
}
-void JNIBufferAdapter::done()
+void JNIBufferAdapter::done(THREAD_CONTEXT threadContext)
{
- std::cout << "Done called internally\n";
- controller->env->CallVoidMethod(obj,controller->done);
+ JNI_ENV(threadContext)->CallVoidMethod(obj,controller->done);
return;
}
-int JNIBufferAdapter::blockSize()
+int JNIBufferAdapter::blockSize(THREAD_CONTEXT threadContext)
{
- return controller->env->CallIntMethod(obj,controller->encodeSize);
+ return JNI_ENV(threadContext)->CallIntMethod(obj,controller->encodeSize);
}
-void JNIBufferAdapter::onError(long errorCode, std::string error)
+void JNIBufferAdapter::onError(THREAD_CONTEXT threadContext, long errorCode, std::string error)
{
std::cout<< "Calling onError with errorCode " << errorCode << "\n";
- jstring strError = controller->env->NewStringUTF(error.data());
- controller->env->CallVoidMethod(obj, controller->error, (jint)errorCode, strError);
+ jstring strError = JNI_ENV(threadContext)->NewStringUTF(error.data());
+ JNI_ENV(threadContext)->CallVoidMethod(obj, controller->error, (jint)errorCode, strError);
}
+
+void JNIBufferAdapter::destroy(THREAD_CONTEXT threadContext)
+{
+ JNI_ENV(threadContext)->DeleteGlobalRef(obj);
+}
Modified: projects/jaio/trunk/jaio/native/src/JNIBufferAdapter.h
===================================================================
--- projects/jaio/trunk/jaio/native/src/JNIBufferAdapter.h 2008-02-18 15:21:32 UTC (rev 3732)
+++ projects/jaio/trunk/jaio/native/src/JNIBufferAdapter.h 2008-02-18 20:05:24 UTC (rev 3733)
@@ -1,32 +1,39 @@
#ifndef JNIBUFFERADAPTER_H_
#define JNIBUFFERADAPTER_H_
+#include <iostream>
+
#include "BufferAdapter.h"
#include "AIOController.h"
-#include <iostream>
+#include "JAIODatatypes.h"
+
class JNIBufferAdapter : public BufferAdapter
{
private:
AIOController * controller;
jobject obj;
int refs;
+ void destroy(THREAD_CONTEXT threadContext);
+
public:
+ // _ob must be a global Reference (use createGloblReferente before calling the constructor)
JNIBufferAdapter(AIOController * _controller, jobject _ob);
virtual ~JNIBufferAdapter();
- void encode(const int& size, void *);
- void done();
- int blockSize();
- void onError(long error, std::string error);
- void addref()
+ void encode(THREAD_CONTEXT threadContext, const int& size, void *);
+ void done(THREAD_CONTEXT threadContext);
+ int blockSize(THREAD_CONTEXT threadContext);
+ void onError(THREAD_CONTEXT threadContext, long error, std::string error);
+ void addref(THREAD_CONTEXT threadContextt)
{
refs++;
}
- void deleteRef()
+ void deleteRef(THREAD_CONTEXT threadContext)
{
if (--refs <= 0)
{
+ destroy(threadContext);
delete this;
}
}
Modified: projects/jaio/trunk/jaio/native/src/LibAIOController.cpp
===================================================================
--- projects/jaio/trunk/jaio/native/src/LibAIOController.cpp 2008-02-18 15:21:32 UTC (rev 3732)
+++ projects/jaio/trunk/jaio/native/src/LibAIOController.cpp 2008-02-18 20:05:24 UTC (rev 3733)
@@ -45,8 +45,6 @@
if (!controller->error) return 0;
- controller->env = env;
-
return (jlong)controller;
}
catch (AIOException& e){
@@ -82,9 +80,6 @@
controller->error = env->GetMethodID(clazz,"onError","(ILjava/lang/String;)V");
-
- controller->env = env;
-
return (jlong)controller;
}
catch (AIOException& e){
@@ -98,11 +93,11 @@
JNIEXPORT void JNICALL Java_org_jboss_jaio_libaioimpl_LibAIOController_append
(JNIEnv *env, jclass, jlong controllerAddress, jobject obj)
{
- try
+ try
{
AIOController * controller = (AIOController *) controllerAddress;
- JNIBufferAdapter * adapter = new JNIBufferAdapter(controller, obj);
- controller->manager->addData(adapter);
+ JNIBufferAdapter * adapter = new JNIBufferAdapter(controller, env->NewGlobalRef(obj));
+ controller->manager->addData(env, adapter);
}
catch (AIOException& e)
{
@@ -118,7 +113,7 @@
try
{
AIOController * controller = (AIOController *) controllerAddress;
- controller->manager->pollEvents();
+ controller->manager->pollEvents(env);
}
catch (AIOException& e)
{
@@ -134,7 +129,7 @@
try
{
AIOController * controller = (AIOController *) controllerAddress;
- controller->manager->validateLowRate();
+ controller->manager->validateLowRate(env);
}
catch (AIOException& e)
Modified: projects/jaio/trunk/jaio/native/src/Makefile.am
===================================================================
--- projects/jaio/trunk/jaio/native/src/Makefile.am 2008-02-18 15:21:32 UTC (rev 3732)
+++ projects/jaio/trunk/jaio/native/src/Makefile.am 2008-02-18 20:05:24 UTC (rev 3733)
@@ -5,7 +5,7 @@
JNIBufferAdapter.cpp PageManager.h BufferAdapter.h JNIBufferAdapter.h \
JavaUtilities.cpp org_jboss_jaio_libaioimpl_LibAIOController.h \
PageObserver.h FileOutput.h FileOutput.cpp \
- DataManager.cpp DataManager.h AIOException.h
+ DataManager.cpp DataManager.h AIOException.h JAIODatatypes.h
#libJaio_la_SOURCES = LibAIOController.cpp AIOController.cpp
Modified: projects/jaio/trunk/jaio/native/src/PageManager.cpp
===================================================================
--- projects/jaio/trunk/jaio/native/src/PageManager.cpp 2008-02-18 15:21:32 UTC (rev 3732)
+++ projects/jaio/trunk/jaio/native/src/PageManager.cpp 2008-02-18 20:05:24 UTC (rev 3733)
@@ -1,3 +1,5 @@
+#include <sstream>
+
#include "BufferAdapter.h"
#include "PageManager.h"
#include "pthread.h"
@@ -2,4 +4,5 @@
#include "LockClass.h"
-#include <sstream>
+#include "AIOException.h"
+
PageManager::PageManager(int _pageSize, PageObserver * _observer)
@@ -16,19 +19,23 @@
{
::pthread_mutex_destroy(&pageMutex);
free(memoryArea);
+}
+
+void PageManager::destroy(THREAD_CONTEXT threadContext)
+{
for (std::list<BufferAdapter *>::iterator iter = list->begin(); iter != list->end(); iter ++)
{
- (*iter)->deleteRef();
+ (*iter)->deleteRef(threadContext);
}
delete list;
}
-void PageManager::addData(BufferAdapter * adapter)
+void PageManager::addData(THREAD_CONTEXT threadContext, BufferAdapter * adapter)
{
- long size = adapter->blockSize();
-
+ long size = adapter->blockSize(threadContext);
+
LockClass lock(&pageMutex);
if (pagePosition + size > pageSize)
@@ -37,14 +44,14 @@
char * mem = (char *)malloc(size);
memset(mem, 0, size);
- adapter->encode(size, mem);
+ adapter->encode(threadContext, size, mem);
long local = 0;
adapter->setBlocks(((size - bytesToPage) / pageSize) + 1);
while (size - local > 0)
{
- adapter->addref();
+ adapter->addref(threadContext);
long toBeCompleted = pageSize - pagePosition;
long minValue = size-local > toBeCompleted ? toBeCompleted : size-local;
memcpy(memoryArea + pagePosition, mem + local, minValue);
@@ -52,13 +59,13 @@
list->push_back(adapter);
if (pagePosition >= pageSize)
{
- flushMemory();
+ flushMemory(threadContext);
local+=toBeCompleted;
}
}
- adapter->deleteRef();
+ adapter->deleteRef(threadContext);
free(mem);
}
@@ -66,7 +73,7 @@
{
list->push_back(adapter);
- adapter->encode (size, memoryArea + pagePosition);
+ adapter->encode (threadContext, size, memoryArea + pagePosition);
pagePosition += size;
}
@@ -80,14 +87,15 @@
pagePosition = 0;
}
-void PageManager::flushMemory()
+void PageManager::flushMemory(THREAD_CONTEXT threadContext)
{
- observer->completePage(pagePosition, memoryArea, list);
+ observer->completePage(threadContext, pagePosition, memoryArea, list);
initMemory();
}
-void PageManager::pollEvents()
+void PageManager::pollEvents(THREAD_CONTEXT threadContext)
{
- observer->completePage(pagePosition, memoryArea, list);
- initMemory();
+ //observer->completePage(pagePosition, memoryArea, list);
+ //initMemory();
+ throw AIOException (100, "Not implemented");
}
Modified: projects/jaio/trunk/jaio/native/src/PageManager.h
===================================================================
--- projects/jaio/trunk/jaio/native/src/PageManager.h 2008-02-18 15:21:32 UTC (rev 3732)
+++ projects/jaio/trunk/jaio/native/src/PageManager.h 2008-02-18 20:05:24 UTC (rev 3733)
@@ -1,10 +1,12 @@
#ifndef PAGEMANAGER_H_
#define PAGEMANAGER_H_
+#include "pthread.h"
+
#include "BufferAdapter.h"
#include "PageObserver.h"
#include "DataManager.h"
-#include "pthread.h"
+#include "JAIODatatypes.h"
#include <list>
@@ -26,15 +28,17 @@
public:
PageManager(int pageSize, PageObserver * observer);
virtual ~PageManager();
- void addData(BufferAdapter* adapter);
+ void addData(THREAD_CONTEXT threadContext, BufferAdapter* adapter);
- void pollEvents();
+ void pollEvents(THREAD_CONTEXT threadContext);
- void validateLowRate()
+ void destroy(THREAD_CONTEXT threadContext);
+
+ void validateLowRate(THREAD_CONTEXT threadContext)
{
}
- void flushMemory();
+ void flushMemory(THREAD_CONTEXT context);
};
Modified: projects/jaio/trunk/jaio/native/src/PageObserver.h
===================================================================
--- projects/jaio/trunk/jaio/native/src/PageObserver.h 2008-02-18 15:21:32 UTC (rev 3732)
+++ projects/jaio/trunk/jaio/native/src/PageObserver.h 2008-02-18 20:05:24 UTC (rev 3733)
@@ -3,6 +3,7 @@
#include <list>
#include "BufferAdapter.h"
+#include "JAIODatatypes.h"
/**
* This is probably going to be the file itself
@@ -20,7 +21,7 @@
}
// Implementations of PageObserver should also delete the list, and delete each element of BufferAdapter calling BufferAdapter::killYourslef()
- virtual void completePage(long size, void *, std::list<BufferAdapter *> *)=0;
+ virtual void completePage(THREAD_CONTEXT threadContext, long size, void *, std::list<BufferAdapter *> *)=0;
};
#endif /*PAGEOBSERVER_H_*/
More information about the jboss-cvs-commits
mailing list