[zeromq-dev] Pub-Sub written in same file ..!!
Rahul Mathur
srivmuk at gmail.com
Tue Dec 10 11:43:30 CET 2013
All,
Below code is working fine when SSOMSSub () and SSOMSPub () API are written
as separate two files (sub.cpp and pub.cpp) but it doesn't execute properly
when both API SSOMSSub () & SSOMSPub () are written in same single
test1.hpp file as below and this file being called by driver file test.cpp
as extreme below -
---test1.hpp----
#include <iostream>
#include <sstream>
#include <cstdio>
#include <cstdlib>
#include <string>
#include "zmq.hpp"
#include "zmq_utils.h"
using namespace std;
struct MessageStruct {
int UniqueID;
short ProClientIndicator;
char AccountNumber;
short ORDERTYPE;
char Symbol;
int Volume;
int Price;
short Buy_Sell;
} ss_oms_call;
class Test {
public:
int SSOMSSub ();
int SSOMSPub ();
};
int Test::SSOMSSub () {
zmq::context_t context (1);
std::cout << "Collecting updates from Strategy Server.\n" <<
std::endl;
zmq::socket_t subscriber (context, ZMQ_SUB);
subscriber.connect("tcp://localhost:5556");
const char *filter = "";
subscriber.setsockopt(ZMQ_SUBSCRIBE, filter, strlen (filter));
int update_nbr;
for (update_nbr = 0; update_nbr < 100; update_nbr++) {
zmq::message_t update;
subscriber.recv(&update);
std::istringstream iss(static_cast<char*>(update.data()));
iss >> ss_oms_call.UniqueID >>
ss_oms_call.ProClientIndicator >> ss_oms_call.AccountNumber >>
ss_oms_call.ORDERTYPE >> ss_oms_call.Symbol >>
ss_oms_call.Volume >> ss_oms_call.Price >>
ss_oms_call.Buy_Sell;
}
std::cout << "The Unique ID is .."<< filter
<<ss_oms_call.UniqueID<< std::endl;
std::cout << "The Type of Account is .."<< filter
<<ss_oms_call.ProClientIndicator<< std::endl;
std::cout << "The AccountNumber is .."<< filter
<<ss_oms_call.AccountNumber<< std::endl;
std::cout << "The ORDERTYPE is .."<< filter
<<ss_oms_call.ORDERTYPE<< std::endl;
std::cout << "The Symbol is .."<< filter <<ss_oms_call.Symbol<<
std::endl;
std::cout << "The Volume is .."<< filter <<ss_oms_call.Volume<<
std::endl;
std::cout << "The Price is .."<< filter <<ss_oms_call.Price<<
std::endl;
std::cout << "The Buy or Sell is .."<< filter
<<ss_oms_call.Buy_Sell<< std::endl;
return 0;
}
int Test::SSOMSPub () {
zmq::context_t context (1);
zmq::socket_t pubs (context, ZMQ_PUB);
pubs.bind("tcp://*:5556");
pubs.bind("ipc://ssoms.ipc");
while (1) {
ss_oms_call.UniqueID = 10001;
ss_oms_call.ProClientIndicator = 1;
ss_oms_call.AccountNumber = '4';
ss_oms_call.ORDERTYPE = 0x0000;
ss_oms_call.Symbol = 0x4e;
ss_oms_call.Volume = 50;
ss_oms_call.Price = 625000;
ss_oms_call.Buy_Sell = 2;
zmq::message_t message(1000);
snprintf ((char *) message.data(), 1000 , "%d %hu %x %hu %x
%d %d %hu ", ss_oms_call.UniqueID,
ss_oms_call.ProClientIndicator, ss_oms_call.AccountNumber,
ss_oms_call.ORDERTYPE, ss_oms_call.Symbol,
ss_oms_call.Volume, ss_oms_call.Price,
ss_oms_call.Buy_Sell);
pubs.send(message);
}
return 0;
}
----
and driver file (test2.cpp) -
---
#include <iostream>
#include "test1.hpp"
int main () {
Test tst;
tst.SSOMSSub ();
tst.SSOMSPub ();
return 0;
}
--
It's execution hangs as -
$ ./test2
Collecting updates from Strategy Server.
--
Any clue.
Thanks!!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.zeromq.org/pipermail/zeromq-dev/attachments/20131210/78282ed6/attachment.htm>
More information about the zeromq-dev
mailing list