QuickFix に Python バインディングを使用する場合、Python で MessageStoreFactory クラスをどのようにサブクラス化しますか?
これを試みると、オブジェクトは MessageStoreFactory として「見えません」:
NotImplementedError: Wrong number of arguments for overloaded function 'new_SocketInitiatorBase'.
Possible C/C++ prototypes are:
FIX::SocketInitiator(FIX::Application &,FIX::MessageStoreFactory &,FIX::SessionSettings const &)
FIX::SocketInitiator(FIX::Application &,FIX::MessageStoreFactory &,FIX::SessionSettings const &,FIX::LogFactory &)
このエラーは、型が間違っている場合に SWIG によって返されるようです。(私は過去に Boost しか使用したことがありません。Python での C++ クラスのサブクラス化は SWIG でも可能ですか?)
更新され た Python バインディングは、Ubuntu 12.04 用にパッケージ化されたものです。エラーが発生するのは、SocketInitiator を作成するときに、QuickFix オブジェクトの 1 つを以下のオブジェクトと交換した場合に限られるため、引数が正しいと確信しています。
class TestStoreFactory(quickfix.MessageStoreFactory):
def __init__(self):
logging.info("TestStoreFactory()")
def create(self, sessionId):
logging.info("Create %s"%sessionId)
def destroy(self, messageStore):
logging.info("Destroy %s" % messageStore)