Re: OpenMama Bridge Developer Guide
Mike Schonberg <mschonberg@...>
Glenn,
A Wiki is a good idea. In the meantime, can you make the revisions in the word doc for the time being. We are also planning on adding a section on how to implement minimal bridge functionality. Jacob is working on that now.
Regards, -Mike
From: openmama-dev-bounces@... [mailto:openmama-dev-bounces@...] On Behalf Of Glenn McClements
Sent: Wednesday, June 13, 2012 7:28 AM To: Jacobraj Benet; openmama-dev@... Subject: Re: [Openmama-dev] OpenMama Bridge Developer Guide
Jacob (and other folks), Any chance this can be moved to some form of Wiki for community editing? I'm reviewing the doc and am noting down changes, but it would be just as quick to edit the doc itself if it was available.
Glenn
From: Jacobraj Benet <JBenet@...>
Hello everyone,
Find attached the initial draft of the OpenMAMA Bridge developers Guide, This is an initial draft and would be refined and improved over the coming weeks.
Please do provide any feedbacks/recommendation regarding this document to the dev list.
We are also able to contribute some the resourcing from our tech writer team, the week of the 25th to finalize this document and if possible feedback in advance would be appreciated.
Thanks, Jacob Please consider the environment before printing this email. Visit our website at http://www.nyse.com
Please consider the environment before printing this e-mail. Please consider the environment before printing this email. Visit our website at http://www.nyse.com
|
|
Re: OpenMama Bridge Developer Guide
Glenn McClements <gmcclements@...>
Jacob (and other folks),
Any chance this can be moved to some form of Wiki for community editing? I'm reviewing the doc and am noting down changes, but it would be just as quick to edit the doc itself if it was available.
Glenn
From: Jacobraj Benet <JBenet@...>
Date: Tue, 12 Jun 2012 17:33:44 +0100 To: "openmama-dev@..." <openmama-dev@...> Subject: [Openmama-dev] OpenMama Bridge Developer Guide Hello everyone,
Find attached the initial draft of the OpenMAMA Bridge developers Guide, This is an initial draft and would be refined and improved over the coming weeks.
Please do provide any feedbacks/recommendation regarding this document to the dev list.
We are also able to contribute some the resourcing from our tech writer team, the week of the 25th to finalize this document and if possible feedback in advance would be appreciated.
Thanks,
Jacob
Please consider the environment before printing this email. Visit our website at http://www.nyse.com
Please consider the environment before printing this e-mail. This e-mail may contain confidential and/or privileged information. If you are not the intended recipient or have received this e-mail in error, please advise the sender immediately by reply e-mail and delete this message and any attachments without retaining a copy. Any unauthorised copying, disclosure or distribution of the material in this e-mail is strictly forbidden.
|
|
OpenMama Bridge Developer Guide
Jacobraj Benet <JBenet@...>
Hello everyone,
Find attached the initial draft of the OpenMAMA Bridge developers Guide, This is an initial draft and would be refined and improved over the coming weeks.
Please do provide any feedbacks/recommendation regarding this document to the dev list.
We are also able to contribute some the resourcing from our tech writer team, the week of the 25th to finalize this document and if possible feedback in advance would be appreciated.
Thanks,
Jacob
Please consider the environment before printing this email. Visit our website at http://www.nyse.com
|
|
OpenMAMA-2.1.1.2 and New Branches
Michael Schonberg <mschonberg@...>
I pushed a number of changes to the git repository this week, and created two
new branches. The new branches are "next" and OpenMama-2.1.1. The next branch contains all the patches submitted to the mailing list that are under consideration for the next scheduled release, OpenMAMA-2.1.2. This includes all of the patches submitted to openmama-dev thus far. The OpenMAMA-2.1.1 branch is the current stable branch starting from the April 29 2.1.1.1 release which is tagged with OpenMAMA-2.1.1.1. Only critical bug fixes and very low impact changes will be merged into the stable branches. All changes to the stable branches must be first committed to master. I will be posting additional details on the development cycle and how changes get into the next, master and stable branches to the web site and openmama-dev in the coming days. The changes for 2.1.1.2 are described below. The source and binaries are not available on the web site yet as there are some issues uploading files at the moment. I expect to have this resolved shortly. Regards, -Michael Schonberg <mschonberg@nyx.com> CHANGES: OpenMAMA 2.1.1.2 This release contains very minor fixes focusing on the build environment. The 2.1.1.1 release, which introduced OpenMAMDA in addition to C++ and Java support, complicated the build environment significantly. These changes address some of the build issues encountered. Subsequent minor releases will attempt to further simplify the build process. Changes: Add patch for -lmama for news and orderbook examples The news and orderbook examples were not building because the linker could not find libmama. This patch adjusts the link flags to include the path to the mama c libraries. Signed-off-by: Mike Schonberg <mschonberg@nyx.com> Add libpthread to library list for sem_timedwait configure.ac needs to search for sem_timedwait in both librt and libpthread. On OS's like certain Solaris versions that do not support sem_timedwait(), OpenMAMA provides an implentation. Signed-off-by: Mike Schonberg <mschonberg@nyx.com> Updated Build Instructions Added better download and build instructions for the Avis client and router. For the OpenMAMA build it is necessary to specify --with-avis to build the Avis bridge, and it is also necessary to invoke generateBuildFiles.sh prior to building source from a cloned git repository. Signed-off-by: Mike Schonberg <mschonberg@nyx.com> [mama] Adding .gitignore This patch introduces a .gitignore file to force git to skip known build artifacts when displaying status information. Signed-off-by: Mark Spielman <mark.spielman@solacesystems.com>
|
|
Re: [PATCH] [common] Added some other pthread calls to linux os abstraction layer
Michael Schonberg <mschonberg@...>
On Wed, 23 May 2012, Ian Bell wrote:
Hi MikeThat is fine. As long as it makes it in. To this end iI have also been adding some unittests to the common folder toI will hold the patch back until you submit the windows changes, and push them together. I plan on pushing your other patches to a "next" branch for pending changes, and I will leave this one out until the Windows changes are ready. Regards, -Mike
|
|
Re: [PATCH] [common] Added some other pthread calls to linux os abstraction layer
Ian Bell <IBell@...>
Hi Mike
toggle quoted messageShow quoted text
As you have pointed out below adding this to windows is a bit less straightforward and requires a bit more testing. I was going to bundle the windows code together with some other patches i have for the windows layer to cut down on the testing effort. To this end iI have also been adding some unittests to the common folder to facilitate testing of these components separately from mama. As i have not yet submitted any patches which require this feature to be present in the abstraction layer i can hold this patch until such time as the windows version is ready if you prefer. Ian
-----Original Message-----
From: Mike Schonberg Sent: 23 May 2012 01:32 To: Ian Bell; openmama-dev@lists.openmama.org Subject: RE: [PATCH] [common] Added some other pthread calls to linux os abstraction layer Ian, I believe that we need equivalents defined in common/.../windows/lock.h. On Fri, 18 May 2012, Ian Bell wrote: This can be a no-op as Windows condition variables are always recursive. We may need to change the implementation to use Windows condition variables or or change the Event to be manual reset and add locking/and a condition variable to ensure the desired number of threads run (one or all). #define wthread_spinlock_t pthread_spinlock_tThis will be a no-op as well. Regards, -Mike Please consider the environment before printing this e-mail. This e-mail may contain confidential and/or privileged information. If you are not the intended recipient or have received this e-mail in error, please advise the sender immediately by reply e-mail and delete this message and any attachments without retaining a copy. Any unauthorised copying, disclosure or distribution of the material in this e-mail is strictly forbidden.
|
|
Re: Avis transport and msg bridges not decoupled to allow use of one without the other
Michael Schonberg <mschonberg@...>
David,
I think that you may be able to use the Avis payload as it stands purely through the payload bridge and MamaMsg interfaces. See the inline commentary for details. This hightlights the larger issue: we need a good open source payload! Ultimately, I would like to see a number of open source payloads, but one decent one would be a good start. I have been looking at Google Protocol Buffers, and I think that it might work well. This is a topic for another thread, but worth mentioning here. On Tue, 22 May 2012, David Ashburner wrote: Hi Guys, I have been looking that example payload and bridge code and doingI agree that the coupling you describe is not good. I think that it is possible to use the Avis payload in another transport without using the Attributes directly. The Avis transport needs the Attributes to specify the topic as I describe below. Other middlewares should be able simply use the MamaMsg and msgBridge APIs. Payloads and transports are intended to be completely independent in OpenMAMA: transports should pass byte arrays to payloads to decode incoming messages and rely on the payload implementation to encode messages to byte arrays for publishing. The Avis middleware/transport bridge access the Attributes directly in the following methods from msg.c: avisBridgeMamaMsg_destroyMiddlewareMsg() avisBridgeMamaMsg_detach() avisBridgeMamaMsg_getNativeHandle() avisBridgeMamaMsgImpl_setAttributesAndSecure() I think that they could all be replaced to mamaMsg_xxx() and msgBrdige->xxx() calls, but I need to take a closer look to be certain. I will reach out to the author of the bridge and try to determine the rational for accessing the Attributes directly rather than through the bridge. This is correct; however, the Avis transport can only send Avis "Attribute" objects and it musg add topic information to the Attributes prior to publishing and extract them on receipt. This is necessary because Avis/Elvin is content based rather than topic based. We fake topic based messaging by adding a field that specifies the topic for the message and subscribe to all messages that contain the desired topic field value. This code is in publisher.c (the code you quote below) and sub.c. Other transports for topic based middlewares should not need to embed the topic in the payload, and therefore, do not need cast the void pointers to Attributes. Regards, -Mike
|
|
Re: [PATCH] [common] Added some other pthread calls to linux os abstraction layer
Mike Schonberg <mschonberg@...>
Ian,
I believe that we need equivalents defined in common/.../windows/lock.h. On Fri, 18 May 2012, Ian Bell wrote: This can be a no-op as Windows condition variables are always recursive. We may need to change the implementation to use Windows condition variables or or change the Event to be manual reset and add locking/and a condition variable to ensure the desired number of threads run (one or all). #define wthread_spinlock_t pthread_spinlock_tThis will be a no-op as well. Regards, -Mike Please consider the environment before printing this email. Visit our website at http://www.nyse.com **************************************************** Note: The information contained in this message and any attachment to it is privileged, confidential and protected from disclosure. If the reader of this message is not the intended recipient, or an employee or agent responsible for delivering this message to the intended recipient, you are hereby notified that any dissemination, distribution or copying of this communication is strictly prohibited. If you have received this communication in error, please notify the sender immediately by replying to the message, and please delete it from your system. Thank you. NYSE Euronext.
|
|
Re: [PATCH] [mamda] map a delete msg through mamda as an error callback
Mike Schonberg <mschonberg@...>
Thanks Ian.
toggle quoted messageShow quoted text
-Mike
-----Original Message-----Please consider the environment before printing this email. Visit our website at http://www.nyse.com **************************************************** Note: The information contained in this message and any attachment to it is privileged, confidential and protected from disclosure. If the reader of this message is not the intended recipient, or an employee or agent responsible for delivering this message to the intended recipient, you are hereby notified that any dissemination, distribution or copying of this communication is strictly prohibited. If you have received this communication in error, please notify the sender immediately by replying to the message, and please delete it from your system. Thank you. NYSE Euronext.
|
|
Re: Upcoming Patches
Ian Bell <IBell@...>
Hi
toggle quoted messageShow quoted text
As these patches were fairly simple and confined to separate areas i just saved off the diffs from the changesets, then applied and tested them individually. I have a few more complicated patches left to submit but wasn't completely happy with them so held them back. I will use format patch for them. Ian
-----Original Message-----
From: Mike Schonberg Sent: 21 May 2012 21:54 To: Ian Bell; openmama-dev@lists.openmama.org Subject: RE: Upcoming Patches Ian, How are you generating the .patch attachments? Git am does not parse them properly; however git apply works. Git am is a lot less work because it extracts the commit comment, etc. from the patch file. Git format-patch generates a file that works with git am. Regards, -Mike -----Original Message----- Please consider the environment before printing this e-mail. This e-mail may contain confidential and/or privileged information. If you are not the intended recipient or have received this e-mail in error, please advise the sender immediately by reply e-mail and delete this message and any attachments without retaining a copy. Any unauthorised copying, disclosure or distribution of the material in this e-mail is strictly forbidden.
|
|
Re: [PATCH] [mamda] map a delete msg through mamda as an error callback
Ian Bell <IBell@...>
toggle quoted messageShow quoted text
-----Original Message-----
From: Mike Schonberg Sent: 21 May 2012 21:48 To: Ian Bell; openmama-dev@lists.openmama.org Subject: RE: [Openmama-dev] [PATCH] [mamda] map a delete msg through mamda as an error callback -----Original Message-----We need a little more information here. What is a "delete" message? When/why does it get sent? Why is it an error? This comment will ultimately go into the release notes. Regards, -Mike When using a MamdaSubscription and a msg of type delete is received Mamda handles this internally and did not notify the user that this had happened. As no more messages were received after the delete msg this symbol effectively stopped ticking. This patch fires a callback on the MamdaErrorListener to inform the user of the delete msg so they can take any action they wish based on this information. (eg delete the subscription.) I will try to be more verbose on any less straight forward patches in future. Ian
Please consider the environment before printing this e-mail. This e-mail may contain confidential and/or privileged information. If you are not the intended recipient or have received this e-mail in error, please advise the sender immediately by reply e-mail and delete this message and any attachments without retaining a copy. Any unauthorised copying, disclosure or distribution of the material in this e-mail is strictly forbidden.
|
|
Avis transport and msg bridges not decoupled to allow use of one without the other
David @ Rai Technology
Hi Guys,
I have been looking that example payload and bridge code and doing some test coding around building a different bridge. Initially I was thinking of just doing the bridge and using the Avis msg payload, however I think the Avis payload and transport bridges are a little tightly coupled to allow one to be used without the other. this may be inadvertent or done for optimisation reasons but given it is the only example is not so good. I am assuming that a transport bridge should be able to function without any hard coded information about the payload format being used, so in the code fragment below the passed in mamaMsg could be one of a nunber of payload implementations. The call mamaMsgImpl_getPayloadBuffer() should return a packed message buffer ready for passing to the transport for sending. The Avis transport bridge makes the assumption that it will receive an Attribute object, tweaks with this object then passes it to the sending routine. I can see why it is more efficient for the getPayloadBuffer to return the Attribute object rather than a flattened buffer as the later elvin_send call takes and Attribute object as a parameter so to avoid serialising and un-serialising again the assumption is made that a pointer to the Attribute object will be passed. Digging upstream inside the getPayloadBuffer() call it is resolved to the avis payload bridge function avismsgPayload_getByteBuffer(). In this function a pointer to the Attributes is returned instead of the Attributes being serialised with avismsgPayload_serialize(). I understand that is not optimal to serialize, then have to unserialize again only to have the message serialized again in the send but I'm thinking that ba more flexible solution would be to do it properly and create a patch to Avis to add a send method for a pre-serialised buffer. Interested if anyone else has come across this and if any sees it as a problem. Regards, David snip ----bridge/avis/publish.c ----x 146 /*Send a message.*/ 147 mama_status 148 avisBridgeMamaPublisher_send (publisherBridge publisher, mamaMsg msg) 149 { 150 mama_size_t dataLen; 151 mama_status status 152 Attributes* attributes = NULL; 153 154 CHECK_PUBLISHER(publisher); 155 156 status = mamaMsgImpl_getPayloadBuffer (msg, (const void**)&attributes, &dataLen); 157 if (attributes == NULL) 158 return MAMA_STATUS_INVALID_ARG; 159 160 mamaMsg_updateString(msg, SUBJECT_FIELD_NAME, 0, avisPublisher(publisher)->mSubject); 161 162 if (!elvin_send(avisPublisher(publisher)->mAvis, attributes)) { 163 mama_log (MAMA_LOG_LEVEL_ERROR, "avisBridgeMamaPublisher_send(): " 164 "Could not send message."); 165 return MAMA_STATUS_PLATFORM; 166 }
|
|
Re: Upcoming Patches
Mike Schonberg <mschonberg@...>
Ian,
toggle quoted messageShow quoted text
How are you generating the .patch attachments? Git am does not parse them properly; however git apply works. Git am is a lot less work because it extracts the commit comment, etc. from the patch file. Git format-patch generates a file that works with git am. Regards, -Mike
-----Original Message-----Please consider the environment before printing this email. Visit our website at http://www.nyse.com **************************************************** Note: The information contained in this message and any attachment to it is privileged, confidential and protected from disclosure. If the reader of this message is not the intended recipient, or an employee or agent responsible for delivering this message to the intended recipient, you are hereby notified that any dissemination, distribution or copying of this communication is strictly prohibited. If you have received this communication in error, please notify the sender immediately by replying to the message, and please delete it from your system. Thank you. NYSE Euronext.
|
|
Re: [PATCH] [mamda] map a delete msg through mamda as an error callback
Mike Schonberg <mschonberg@...>
toggle quoted messageShow quoted text
-----Original Message-----We need a little more information here. What is a "delete" message? When/why does it get sent? Why is it an error? This comment will ultimately go into the release notes. Regards, -Mike Please consider the environment before printing this email. Visit our website at http://www.nyse.com **************************************************** Note: The information contained in this message and any attachment to it is privileged, confidential and protected from disclosure. If the reader of this message is not the intended recipient, or an employee or agent responsible for delivering this message to the intended recipient, you are hereby notified that any dissemination, distribution or copying of this communication is strictly prohibited. If you have received this communication in error, please notify the sender immediately by replying to the message, and please delete it from your system. Thank you. NYSE Euronext.
|
|
[PATCH] [mama] Fix some compiler warnings in example applications
Ian Bell <IBell@...>
commit 209b2547f7ae959ab9d4fb96fe132c04855cfed3 Author: Ian Bell <IBell@...> Date: Fri May 18 11:48:00 2012 +0100
[mama] Fix some compiler warnings in example applications Signed-off-by: Ian Bell <IBell@...>
diff --git a/mama/c_cpp/src/examples/cpp/mamalistencpp.cpp b/mama/c_cpp/src/examples/cpp/mamalistencpp.cpp index 598db0e..9cbbe3c 100644 --- a/mama/c_cpp/src/examples/cpp/mamalistencpp.cpp +++ b/mama/c_cpp/src/examples/cpp/mamalistencpp.cpp @@ -94,7 +94,7 @@ typedef vector<const char*> SymbolList; #define BUFFER_SIZE 256 -static char* gUsageString[]= +static const char* gUsageString[]= { "mamalistencpp - Generic Mama API C++ subscriber.", "", @@ -185,7 +185,7 @@ private: const char* mDictTport; MamaTransport* mDictTransport; int mDumpDataDict; - int mBuildDataDict; + bool mBuildDataDict; bool mDictionaryComplete; int mRequireInitial; int mSnapshot; @@ -265,16 +265,16 @@ public: template <class Vector> void displayVectorField (Vector* field, size_t size, - char* format); + const char* format);
template <class T> - void printData (char* format, + void printData (const char* format, T data); /* This is required for VC6 because it chokes on instantiating * the template with "unsigned char. */ - void printData (char* format, + void printData (const char* format, unsigned char data); private: @@ -425,6 +425,7 @@ private:
MamaListen::MamaListen(): + mShutdownTime (0), mBridgeImpl (NULL), mMiddleware ("wmw"), mDefaultQueue (NULL), @@ -439,6 +440,7 @@ MamaListen::MamaListen(): mDictTport (NULL), mDictTransport (NULL), mDumpDataDict (0), + mBuildDataDict (true), mDictionaryComplete (false), mRequireInitial (1), mSnapshot (0), @@ -459,9 +461,7 @@ MamaListen::MamaListen(): mPrintMessages (false), mDisplayData (true), mQualityForAll (true), - mNewIterators (false), - mShutdownTime (0), - mBuildDataDict (true) + mNewIterators (false) {} MamaListen::~MamaListen() @@ -557,11 +557,6 @@ void MamaListen::parseCommandLine (int argc, const char* argv[]) mDumpDataDict = 1; i++; } - else if (strcmp (argv[i], "-B") == 0) - { - mBuildDataDict = false; - i++; - } else if (strcmp (argv[i], "-I") == 0) { mRequireInitial = 0; @@ -671,7 +666,7 @@ void MamaListen::parseCommandLine (int argc, const char* argv[]) { const char* logfileName = argv[i+1]; if (logfileName == NULL || logfileName[0] == '-' - || logfileName == "") + || strcmp(logfileName, "") == 0) { logfileName = "mamalistencpp.log"; i++; @@ -1518,7 +1513,7 @@ void DisplayCallback::displaySpecificFields (const MamaMsg& msg, } template <class T> -void DisplayCallback::printData (char* format, +void DisplayCallback::printData (const char* format, T data) { if (mMamaListen->getQuietness () < 1) @@ -1530,7 +1525,7 @@ void DisplayCallback::printData (char* format, } } -void DisplayCallback::printData (char* format, +void DisplayCallback::printData (const char* format, unsigned char data) { if (mMamaListen->getQuietness () < 1) @@ -1545,7 +1540,7 @@ void DisplayCallback::printData (char* format, template <class Vector> void DisplayCallback::displayVectorField (Vector* field, size_t size, - char* format) + const char* format) { if(mMamaListen->printVectorFields ()) { diff --git a/mama/c_cpp/src/examples/cpp/mamaproxycpp.cpp b/mama/c_cpp/src/examples/cpp/mamaproxycpp.cpp index 98f61bd..851921e 100644 --- a/mama/c_cpp/src/examples/cpp/mamaproxycpp.cpp +++ b/mama/c_cpp/src/examples/cpp/mamaproxycpp.cpp @@ -921,22 +921,24 @@ void MamaProxy::usage (int exitStatus) } MamaProxy::MamaProxy(): + mPubManager (NULL), + mPubTransport (NULL), + mPubTport (NULL), mPubBridge (NULL), - mSubBridge (NULL), mPubMiddleware ("wmw"), - mSubMiddleware ("wmw"), mPubDefaultQueue (NULL), - mSubDefaultQueue (NULL), - mPubTport (NULL), - mSubTport (NULL), - mQuietness (0), - mFilename (NULL), mPubSource ("MAMA_PROXY"), + mSubTransport (NULL), + mSubTport (NULL), + mSubBridge (NULL), + mSubMiddleware ("wmw"), + mSubDefaultQueue (NULL), mSubSource (NULL), + mFilename (NULL), sendSync (false), - mPubTransport (NULL), - mSubTransport (NULL), - mPubManager (NULL), - mMamaLogLevel (MAMA_LOG_LEVEL_WARN) + mQuietness (0), + mMamaLogLevel (MAMA_LOG_LEVEL_WARN), + managerCallback (NULL), + syncTimer (NULL) {} diff --git a/mama/c_cpp/src/examples/cpp/mamasymbollistsubscribercpp.cpp b/mama/c_cpp/src/examples/cpp/mamasymbollistsubscribercpp.cpp index 5dce30f..4f5975f 100644 --- a/mama/c_cpp/src/examples/cpp/mamasymbollistsubscribercpp.cpp +++ b/mama/c_cpp/src/examples/cpp/mamasymbollistsubscribercpp.cpp @@ -91,7 +91,7 @@ private: MamaTransport* mDictTransport; bool mDictionaryComplete; int mQuietness; - int mBuildDataDict; + bool mBuildDataDict; const char* mSourceName; MamaDictionary* mDictionary; void* mSubscriptionCallback; @@ -401,13 +401,13 @@ MamaSymbolListSubscriber::MamaSymbolListSubscriber (): mDictTransport (NULL), mDictionaryComplete (false), mQuietness (0), + mBuildDataDict (true), mSourceName (NULL), mDictionary (NULL), mSubscriptionCallback (NULL), mSymbolListSubscriptionCallback (NULL), mQueueGroup (NULL), - mMamaLogLevel (MAMA_LOG_LEVEL_WARN), - mBuildDataDict (true) + mMamaLogLevel (MAMA_LOG_LEVEL_WARN) {}
MamaSymbolListSubscriber::~MamaSymbolListSubscriber () Please consider the environment before printing this e-mail. This e-mail may contain confidential and/or privileged information. If you are not the intended recipient or have received this e-mail in error, please advise the sender immediately by reply e-mail and delete this message and any attachments without retaining a copy. Any unauthorised copying, disclosure or distribution of the material in this e-mail is strictly forbidden.
|
|
[PATCH][mama] Added a unittest command line arg to test different payloads
Ian Bell <IBell@...>
commit 74cd857ce792cfbd3bcc490d2c5a3350d500d21e Author: Ian Bell <IBell@...> Date: Thu May 17 21:48:53 2012 +0100
[mama] Added a unittest command line arg to test different payloads Signed-off-by: Ian Bell <IBell@...>
diff --git a/mama/c_cpp/src/gunittest/Makefile.am b/mama/c_cpp/src/gunittest/Makefile.am index 3a09645..b51c0af 100644 --- a/mama/c_cpp/src/gunittest/Makefile.am +++ b/mama/c_cpp/src/gunittest/Makefile.am @@ -24,5 +24,3 @@ VPATH = @srcdir@ SUBDIRS = c cpp -CPPFLAGS += -DWITH_UNIT_TESTS -CFLAGS += -DWITH_UNIT_TESTS diff --git a/mama/c_cpp/src/gunittest/c/MainUnitTestC.cpp b/mama/c_cpp/src/gunittest/c/MainUnitTestC.cpp index 9b0ea7d..9343e86 100644 --- a/mama/c_cpp/src/gunittest/c/MainUnitTestC.cpp +++ b/mama/c_cpp/src/gunittest/c/MainUnitTestC.cpp @@ -38,6 +38,7 @@ static string version ("APPNAMESTR: Version " VERSIONSTR
static const char* gMiddleware = "wmw"; +static const char* gPayload = "wmsg";
const char* getMiddleware (void) @@ -45,6 +46,11 @@ const char* getMiddleware (void) return gMiddleware; } +const char* getPayload (void) +{ + return gPayload; +} + static void parseCommandLine (int argc, char** argv) { int i = 1; @@ -57,6 +63,11 @@ static void parseCommandLine (int argc, char** argv) gMiddleware = argv[i+1]; i += 2; } + else if (strcmp ("-p", argv[i]) == 0) + { + gPayload = argv[i+1]; + i += 2; + } else { //unknown arg diff --git a/mama/c_cpp/src/gunittest/c/MainUnitTestC.h b/mama/c_cpp/src/gunittest/c/MainUnitTestC.h index 595521b..947cc90 100644 --- a/mama/c_cpp/src/gunittest/c/MainUnitTestC.h +++ b/mama/c_cpp/src/gunittest/c/MainUnitTestC.h @@ -25,4 +25,5 @@ const char* getMiddleware (void); +const char* getPayload (void); #endif /* MAINUNITTESTC_H_ */ Please consider the environment before printing this e-mail. This e-mail may contain confidential and/or privileged information. If you are not the intended recipient or have received this e-mail in error, please advise the sender immediately by reply e-mail and delete this message and any attachments without retaining a copy. Any unauthorised copying, disclosure or distribution of the material in this e-mail is strictly forbidden.
|
|
[PATCH] [mama] Added a log file rolling API
Ian Bell <IBell@...>
commit 5fa225447238332cc15512e2d065cdff4f15175c Author: Ian Bell <IBell@...> Date: Thu May 17 21:44:26 2012 +0100
[mama] Added a log file rolling API Signed-off-by: Ian Bell <IBell@...>
diff --git a/mama/c_cpp/src/c/log.c b/mama/c_cpp/src/c/log.c index d6c99b7..a8ca6cc 100644 --- a/mama/c_cpp/src/c/log.c +++ b/mama/c_cpp/src/c/log.c @@ -1000,8 +1000,8 @@ mama_logDefault2 (MamaLogLevel level, fprintf (f, "(%x) : ", (unsigned int)wGetCurrentThreadId()); } - fprintf (f, message); - fprintf (f, "\n"); + fprintf (f, "%s", message); + fprintf (f, "%s", "\n"); fflush (f); } @@ -1222,3 +1222,16 @@ int mama_logDecrementVerbosity(MamaLogLevel* level) *level = MAMA_LOG_LEVEL_FINEST; return 1; } + +mama_status mama_logForceRollLogFiles() +{ + mama_status ret = MAMA_STATUS_INVALID_ARG; + MRSW_RESULT al = mamaLog_acquireLock(0); + if(MRSW_S_OK == al) + { + ret = mamaLog_rollLogFiles(); + /* Release the read lock. */ + MRSWLock_release(g_lock, 1); + } + return ret; +} diff --git a/mama/c_cpp/src/c/mama/log.h b/mama/c_cpp/src/c/mama/log.h index 6c7915a..bd96fc7 100644 --- a/mama/c_cpp/src/c/mama/log.h +++ b/mama/c_cpp/src/c/mama/log.h @@ -282,6 +282,15 @@ MAMAExpDLL extern int mama_logDecrementVerbosity(MamaLogLevel* level); +/** + * Force rolling the log file. + * + * @return The status of the operation. + */ +MAMAExpDLL +extern mama_status +mama_logForceRollLogFiles(); + /** Destroy memory held by the logging */ void mama_logDestroy(void); diff --git a/mama/c_cpp/src/cpp/MamaLogFile.cpp b/mama/c_cpp/src/cpp/MamaLogFile.cpp index ca77c07..14955a5 100644 --- a/mama/c_cpp/src/cpp/MamaLogFile.cpp +++ b/mama/c_cpp/src/cpp/MamaLogFile.cpp @@ -93,4 +93,9 @@ namespace Wombat } } + void MamaLogFile::rollFiles() + { + mamaTry (mama_logForceRollLogFiles()); + } + } // namespace Wombat diff --git a/mama/c_cpp/src/cpp/mama/MamaLogFile.h b/mama/c_cpp/src/cpp/mama/MamaLogFile.h index 4d4abd7..87b023b 100644 --- a/mama/c_cpp/src/cpp/mama/MamaLogFile.h +++ b/mama/c_cpp/src/cpp/mama/MamaLogFile.h @@ -88,6 +88,11 @@ namespace Wombat */ static bool loggingToFile( void ); + /** + * Perform a log file rolling. + */ + static void rollFiles(); + private: /** * Utility class. No instances. Please consider the environment before printing this e-mail. This e-mail may contain confidential and/or privileged information. If you are not the intended recipient or have received this e-mail in error, please advise the sender immediately by reply e-mail and delete this message and any attachments without retaining a copy. Any unauthorised copying, disclosure or distribution of the material in this e-mail is strictly forbidden.
|
|
[PATCH] [common] Added some other pthread calls to linux os abstraction layer
Ian Bell <IBell@...>
commit cd1c6ae95f2d709136b687f4c40d11a446d4990c Author: Ian Bell <IBell@...> Date: Thu May 17 21:38:59 2012 +0100
[common] Added some other pthread calls to linux os abstraction layer Signed-off-by: Ian Bell <IBell@...>
diff --git a/common/c_cpp/src/c/linux/port.h b/common/c_cpp/src/c/linux/port.h index b40b4fa..a94ac7f 100644 --- a/common/c_cpp/src/c/linux/port.h +++ b/common/c_cpp/src/c/linux/port.h @@ -58,6 +58,7 @@ extern "C" /* PTHREAD static locks are easy */ typedef pthread_mutex_t wthread_static_mutex_t; #define WSTATIC_MUTEX_INITIALIZER PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP +#define WTHREAD_MUTEX_RECURSIVE PTHREAD_MUTEX_RECURSIVE #define wthread_static_mutex_lock(x) pthread_mutex_lock((x)) #define wthread_static_mutex_unlock(x) pthread_mutex_unlock((x)) @@ -135,6 +136,7 @@ int wsem_timedwait (wsem_t* sem, unsigned int ts); #define wthread_cond_signal pthread_cond_signal #define wthread_cond_destroy pthread_cond_destroy #define wthread_cond_wait pthread_cond_wait +#define wthread_cond_broadcast pthread_cond_broadcast #define wthread_spinlock_t pthread_spinlock_t #define wthread_spin_init pthread_spin_init @@ -147,6 +149,7 @@ int wsem_timedwait (wsem_t* sem, unsigned int ts); #define wthread_mutexattr_t pthread_mutexattr_t #define wthread_mutexattr_init pthread_mutexattr_init +#define wthread_mutexattr_destroy pthread_mutexattr_destroy #define wthread_mutexattr_settype pthread_mutexattr_settype #define wGetCurrentThreadId pthread_self Please consider the environment before printing this e-mail. This e-mail may contain confidential and/or privileged information. If you are not the intended recipient or have received this e-mail in error, please advise the sender immediately by reply e-mail and delete this message and any attachments without retaining a copy. Any unauthorised copying, disclosure or distribution of the material in this e-mail is strictly forbidden.
|
|
[PATCH][mamda] Moved processing of IsIrregular Field to mirror C++ functionality
Ian Bell <IBell@...>
commit c8d8dfaa5074343869aada0ea67bd94b55cb806b Author: Ian Bell <IBell@...> Date: Thu May 17 21:51:10 2012 +0100
[mamda] Moved processing of IsIrregular Field to mirror C++ functionality Signed-off-by: Ian Bell <IBell@...>
diff --git a/mamda/java/com/wombat/mamda/MamdaTradeListener.java b/mamda/java/com/wombat/mamda/MamdaTradeListener.java index 0cf66c4..8049981 100644 --- a/mamda/java/com/wombat/mamda/MamdaTradeListener.java +++ b/mamda/java/com/wombat/mamda/MamdaTradeListener.java @@ -3776,9 +3776,6 @@ public class MamdaTradeListener implements MamdaMsgListener, if (MamdaTradeFields.ON_EXCHANGE_TRADE_PRICE != null) mUpdaters[i++] = new OnExTradePrice(); - if (MamdaTradeFields.IS_IRREGULAR != null) - mUpdaters[i++] = new TradeIsIrregular(); - if (MamdaTradeFields.TRADE_UNITS != null) mUpdaters[i++] = new TradeUnits(); @@ -3874,6 +3871,10 @@ public class MamdaTradeListener implements MamdaMsgListener, if (MamdaTradeFields.UPDATE_AS_TRADE != null) mUpdaters[i++] = new TradeUpdateAsTrade(); + + if (MamdaTradeFields.IS_IRREGULAR != null) + mUpdaters[i++] = new TradeIsIrregular(); + } }
Please consider the environment before printing this e-mail. This e-mail may contain confidential and/or privileged information. If you are not the intended recipient or have received this e-mail in error, please advise the sender immediately by reply e-mail and delete this message and any attachments without retaining a copy. Any unauthorised copying, disclosure or distribution of the material in this e-mail is strictly forbidden.
|
|
[PATCH][mama] Added a heartbeat tick API for building FT recovery functionality
Ian Bell <IBell@...>
commit f9f47ce5c1a28f52470b056c852722bd85dadde9 Author: Ian Bell <IBell@...> Date: Thu May 17 21:43:16 2012 +0100
[mama] Added a heartbeat tick API for building FT recovery functionality Signed-off-by: Ian Bell <IBell@...>
diff --git a/mama/c_cpp/src/c/ft.c b/mama/c_cpp/src/c/ft.c index a6b886c..b7366d3 100644 --- a/mama/c_cpp/src/c/ft.c +++ b/mama/c_cpp/src/c/ft.c @@ -142,6 +142,7 @@ typedef struct mamaFtMemberImpl_ mamaPublisher myPublisher; mamaTimer myHeartbeatTimer; mamaTimer myTimeoutTimer; + mama_u32_t myHeartbeatTick; mamaMsg myHeartbeatMsg; const char* myInstanceId; const char* mySymbol; @@ -298,6 +299,7 @@ mamaFtMember_activate ( mama_getIpAddress(&ipaddress); impl->myIP=inet_addr(ipaddress); impl->myNextIncarnation = 1; + impl->myHeartbeatTick = 0; /* Set up the heartbeat timeout timer. */ status = startTimeoutTimer (impl); @@ -408,6 +410,18 @@ mamaFtMember_getTimeoutInterval ( } mama_status +mamaFtMember_getHeartbeatTick ( + const mamaFtMember member, + mama_u32_t* result) +{ + mamaFtMemberImpl* impl = (mamaFtMemberImpl*) member; + if (!impl || !result) + return MAMA_STATUS_INVALID_ARG; + *result = impl->myHeartbeatTick; + return MAMA_STATUS_OK; +} + +mama_status mamaFtMember_getClosure ( const mamaFtMember member, void** result) @@ -611,6 +625,7 @@ ftHeartbeatTimerCb (mamaTimer timer, { mamaFtMemberImpl* impl = (mamaFtMemberImpl*)closure; mama_log (MAMA_LOG_LEVEL_FINE, "MAMA multicast FT: heartbeat timer has fired"); + impl->myHeartbeatTick++; impl->ftSendHeartbeat (impl); } @@ -833,6 +848,7 @@ multicastFt_setup ( if (ftInterface == NULL) ftInterface = ""; } + ftNetwork = multicastFt_getProperty (propertyName, "mama.multicast.transport.%s.network", transportName); if (ftNetwork == NULL) diff --git a/mama/c_cpp/src/c/mama/ft.h b/mama/c_cpp/src/c/mama/ft.h index 2a96db4..b5279d3 100644 --- a/mama/c_cpp/src/c/mama/ft.h +++ b/mama/c_cpp/src/c/mama/ft.h @@ -156,6 +156,15 @@ mamaFtMember_getTimeoutInterval ( mama_f64_t* result); /** + * Get the current heartbeat tick of the MAMA FT member. + */ +MAMAExpDLL +extern mama_status +mamaFtMember_getHeartbeatTick ( + const mamaFtMember member, + mama_u32_t* result); + +/** * Get the closure argument (provided in the mamaFtMember_create() * function) of the MAMA FT member. */ Please consider the environment before printing this e-mail. This e-mail may contain confidential and/or privileged information. If you are not the intended recipient or have received this e-mail in error, please advise the sender immediately by reply e-mail and delete this message and any attachments without retaining a copy. Any unauthorised copying, disclosure or distribution of the material in this e-mail is strictly forbidden.
|
|