本文整理汇总了C++中TibrvMsg::setSendSubject方法的典型用法代码示例。如果您正苦于以下问题:C++ TibrvMsg::setSendSubject方法的具体用法?C++ TibrvMsg::setSendSubject怎么用?C++ TibrvMsg::setSendSubject使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TibrvMsg
的用法示例。
在下文中一共展示了TibrvMsg::setSendSubject方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main(int argc, char** argv)
{
TibrvStatus status;
int i, j;
// open Tibrv
status = Tibrv::open();
if (status != TIBRV_OK)
{
fprintf(stderr,"Error: could not open TIB/RV, status=%d, text=%s\n",
(int)status,status.getText());
exit(-1);
}
// Get process transport
TibrvTransport* transport = Tibrv::processTransport();
// Create the queue
TibrvQueue queue;
queue.create();
// Create trigger queue
triggerQueue.create();
// Create wait queue
waitQueue.create();
// Create listener
TibrvListener listener;
listener.create(&queue,new MsgCallback(),transport,subject,NULL);
// Create message and set send subject in it.
TibrvMsg msg;
msg.setSendSubject(subject);
// Create two dispatchers
TibrvDispatcher dispatcher1, dispatcher2;
dispatcher1.create(&queue);
dispatcher2.create(&queue);
// Get start time
startTime = time(0);
// We use this to track the message number
int msgIndex = 0;
// Report we are starting to publish messages
printf("Started publishing messages at %d seconds\n\n",
(int)(time(0)-startTime));
fflush(stdout);
// Start publishing two messages at a time
// every second, total of TOTAL_MESSAGES messages
for (i=0; i<TOTAL_MESSAGES/2; i++)
{
// Publish 2 messages
for (j=0; j<2; j++)
{
char str[32];
msgIndex++;
sprintf(str,"value-%d",msgIndex);
msg.updateString("field",str);
transport->send(msg);
}
/* Sleep for 1 second if we have not done publishing */
if (i < TOTAL_MESSAGES/2-1)
{
waitQueue.timedDispatch((tibrv_f64)1.0);
}
}
// Report we've published all messages
printf("\nStopped publishing messages at %d seconds\n\n",
(int)(time(0)-startTime));
fflush(stdout);
// We should not quit main because that will
// cause the program to quit before we
// process all messages.
// Wait until we process all messages and
// post an event into the trigger queue which
// will cause dispatch() to return.
triggerQueue.dispatch();
// Report we have processed all messages
printf("\nProcessed all messages in %d seconds\n",(int)(time(0)-startTime));
fflush(stdout);
// Close Tibrv
Tibrv::close();
return 0;
}
示例2: if
static PyObject*
typemethod_send(PyTibrvNetTransportObject *self, PyObject *args, PyObject *kwds)
{
char *send_subject = NULL, *reply_subject = NULL;
PyObject* message_dictionary;
static char *kwlist[] = {"sendsubject", "message", "replysubject", NULL};
if (! PyArg_ParseTupleAndKeywords(args, kwds, "sO|s", kwlist, &send_subject, &message_dictionary, &reply_subject))
return NULL;
TibrvStatus status;
TibrvMsg msg;
status = msg.setSendSubject(send_subject);
if (status != TIBRV_OK)
{
PyErr_Tibrv(status);
return NULL;
}
if (reply_subject != 0)
msg.setReplySubject(reply_subject);
if (!PyDict_Check(message_dictionary))
{
PyErr_SetString(PyExc_TypeError, "expected message to be dictionary");
return NULL;
}
PyObject *key, *value;
int pos = 0;
while (PyDict_Next(message_dictionary, &pos, &key, &value))
{
if (PyObject_Is<const char*>(key))
{
const char* mnemonic = PyObject_As<const char*>(key);
if (PyObject_Is<tibrv_i32>(value))
status = msg.addI32(mnemonic, PyObject_As<tibrv_i32>(value));
else if (PyObject_Is<const char*>(value))
status = msg.addString(mnemonic, PyObject_As<const char*>(value));
else if (PyObject_Is<tibrv_f64>(value))
status = msg.addF64(mnemonic, PyObject_As<tibrv_f64>(value));
else if (PyObject_Is<tibrv_bool>(value))
status = msg.addBool(mnemonic, PyObject_As<tibrv_bool>(value));
else if (PyObject_Is<tibrvMsgDateTime>(value))
status = msg.addDateTime(mnemonic, PyObject_As<tibrvMsgDateTime>(value));
else
{
PyErr_SetString(PyExc_TypeError, "invalid type for tibco message");
return NULL;
}
if (status != TIBRV_OK)
{
PyErr_Tibrv(status);
return NULL;
}
}
}
status = self->transport->send(msg);
if (status != TIBRV_OK)
{
PyErr_Tibrv(status);
return NULL;
}
Py_INCREF(Py_None);
return Py_None;
}
示例3: main
int main(int argc, char** argv)
{
TibrvStatus status;
int i;
// open Tibrv
status = Tibrv::open();
if (status != TIBRV_OK)
{
fprintf(stderr,"Error: could not open TIB/RV, status=%d, text=%s\n",
(int)status,status.getText());
exit(-1);
}
// get process transport
TibrvTransport* transport = Tibrv::processTransport();
// create two queues
TibrvQueue queue1;
TibrvQueue queue2;
queue1.create();
queue2.create();
// Set priorities
queue1.setPriority(1);
queue2.setPriority(2);
// Create queue group and add queues
TibrvQueueGroup group;
group.create();
group.add(&queue1);
group.add(&queue2);
// Create callback object
MsgCallback* callback = new MsgCallback();
// Create listeners
TibrvListener listener1, listener2;
listener1.create(&queue1,callback,transport,subject1,NULL);
listener2.create(&queue2,callback,transport,subject2,NULL);
TibrvMsg msg;
// Send 10 messages on subject1
msg.setSendSubject(subject1);
for (i=0; i<10; i++)
{
char valstr[32];
sprintf(valstr,"value-1-%d",(i+1));
msg.updateString("field",valstr);
transport->send(msg);
}
// Send 10 messages on subject2
msg.setSendSubject(subject2);
for (i=0; i<10; i++)
{
char valstr[32];
sprintf(valstr,"value-2-%d",(i+1));
msg.updateString("field",valstr);
transport->send(msg);
}
// Dispatch the group. When all events are
// dispatched timedDispatch() will return
// TIBRV_TIMEOUT so we'll break out the while() loop.
while (group.timedDispatch(1) == TIBRV_OK);
// Close Tibrv
Tibrv::close();
return 0;
}