本文整理汇总了C++中checkStatus函数的典型用法代码示例。如果您正苦于以下问题:C++ checkStatus函数的具体用法?C++ checkStatus怎么用?C++ checkStatus使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了checkStatus函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: checkStatus
void DDSEntityManager::deleteFilteredTopic()
{
status = participant->delete_contentfilteredtopic(filteredTopic);
checkStatus(status, "DDS.DomainParticipant.delete_topic");
}
开发者ID:osrf,项目名称:opensplice,代码行数:5,代码来源:DDSEntityManager.cpp
示例2: load
bool load(CFURLRef url) {
OSStatus status;
memset(&aqData,0,sizeof(aqData));
timeBase = 0;
status = AudioFileOpenURL(url,kAudioFileReadPermission,0,&aqData.mAudioFile);
checkStatus(status);
if( status != noErr ) return false;
UInt32 dataFormatSize = sizeof (aqData.mDataFormat); // 1
status = AudioFileGetProperty ( // 2
aqData.mAudioFile, // 3
kAudioFilePropertyDataFormat, // 4
&dataFormatSize, // 5
&aqData.mDataFormat // 6
);
checkStatus(status);
status = AudioQueueNewOutput ( // 1
&aqData.mDataFormat, // 2
HandleOutputBuffer, // 3
&aqData, // 4
CFRunLoopGetCurrent (), // 5
kCFRunLoopCommonModes, // 6
0, // 7
&aqData.mQueue // 8
);
checkStatus(status);
UInt32 maxPacketSize;
UInt32 propertySize = sizeof (maxPacketSize);
status = AudioFileGetProperty ( // 1
aqData.mAudioFile, // 2
kAudioFilePropertyPacketSizeUpperBound, // 3
&propertySize, // 4
&maxPacketSize // 5
);
checkStatus(status);
deriveBufferSize ( // 6
aqData.mDataFormat, // 7
maxPacketSize, // 8
0.5, // 9
&aqData.bufferByteSize, // 10
&aqData.mNumPacketsToRead // 11
);
bool isFormatVBR = ( // 1
aqData.mDataFormat.mBytesPerPacket == 0 ||
aqData.mDataFormat.mFramesPerPacket == 0
);
if (isFormatVBR) { // 2
aqData.mPacketDescs =
(AudioStreamPacketDescription*) malloc (
aqData.mNumPacketsToRead * sizeof (AudioStreamPacketDescription)
);
} else { // 3
aqData.mPacketDescs = NULL;
}
UInt32 cookieSize = sizeof (UInt32); // 1
OSStatus couldNotGetProperty = // 2
AudioFileGetPropertyInfo ( // 3
aqData.mAudioFile, // 4
kAudioFilePropertyMagicCookieData, // 5
&cookieSize, // 6
NULL // 7
);
// checkStatus(couldNotGetProperty);
if (!couldNotGetProperty && cookieSize) { // 8
char* magicCookie =
(char *) malloc (cookieSize);
status = AudioFileGetProperty ( // 9
aqData.mAudioFile, // 10
kAudioFilePropertyMagicCookieData, // 11
&cookieSize, // 12
magicCookie // 13
);
checkStatus(status);
status = AudioQueueSetProperty ( // 14
aqData.mQueue, // 15
kAudioQueueProperty_MagicCookie, // 16
magicCookie, // 17
cookieSize // 18
);
checkStatus(status);
free (magicCookie); // 19
}
return true;
}
开发者ID:sammyshj,项目名称:assignment,代码行数:97,代码来源:AudioPlayer.cpp
示例3: onAccess
bool WebGLFramebuffer::onAccess(GraphicsContext3D* context3d, const char** reason)
{
if (checkStatus(reason) != GraphicsContext3D::FRAMEBUFFER_COMPLETE)
return false;
return true;
}
开发者ID:windyuuy,项目名称:opera,代码行数:6,代码来源:WebGLFramebuffer.cpp
示例4: checkStatus
void DDSEntityManager::deleteReader(DDS::DataReader_ptr dataReader)
{
status = subscriber->delete_datareader(dataReader);
checkStatus(status, "DDS::Subscriber::delete_datareader ");
}
开发者ID:shizhexu,项目名称:opensplice,代码行数:5,代码来源:DDSEntityManager.cpp
示例5: deleteContainedEntities
void deleteContainedEntities()
{
// Recursively delete all entities in the DomainParticipant.
g_status = DDS_DomainParticipant_delete_contained_entities(g_domainParticipant);
checkStatus(g_status, "DDS_DomainParticipant_delete_contained_entities");
}
开发者ID:xrl,项目名称:opensplice_dds,代码行数:6,代码来源:DDSEntitiesManager.c
示例6: deleteParticipant
void deleteParticipant()
{
g_status = DDS_DomainParticipantFactory_delete_participant(g_domainParticipantFactory, g_domainParticipant);
checkStatus(g_status, "DDS_DomainParticipantFactory_delete_participant");
}
开发者ID:xrl,项目名称:opensplice_dds,代码行数:5,代码来源:DDSEntitiesManager.c
示例7: deleteSubscriber
void deleteSubscriber(DDS_Subscriber subscriber)
{
g_status = DDS_DomainParticipant_delete_subscriber(g_domainParticipant, subscriber);
checkStatus(g_status, "DDS_DomainParticipant_delete_subscriber");
}
开发者ID:xrl,项目名称:opensplice_dds,代码行数:5,代码来源:DDSEntitiesManager.c
示例8: deleteDataReader
void deleteDataReader(DDS_Subscriber subscriber, DDS_DataReader dataReader)
{
g_status = DDS_Subscriber_delete_datareader(subscriber, dataReader);
checkStatus(g_status, "DDS_Subscriber_delete_datareader");
}
开发者ID:xrl,项目名称:opensplice_dds,代码行数:5,代码来源:DDSEntitiesManager.c
示例9: checkGLSupport
void ofFbo::setup(Settings _settings) {
checkGLSupport();
destroy();
if(_settings.width == 0) _settings.width = ofGetWidth();
if(_settings.height == 0) _settings.height = ofGetHeight();
settings = _settings;
// create main fbo
// this is the main one we bind for drawing into
// all the renderbuffers are attached to this (whether MSAA is enabled or not)
glGenFramebuffers(1, &fbo);
retainFB(fbo);
bind();
// If we want both a depth AND a stencil buffer tehn combine them into a single buffer
#ifndef TARGET_OPENGLES
if( settings.useDepth && settings.useStencil )
{
stencilBuffer = depthBuffer = createAndAttachRenderbuffer(GL_DEPTH_STENCIL, GL_DEPTH_STENCIL_ATTACHMENT);
retainRB(depthBuffer);
retainRB(stencilBuffer);
}else
#endif
{
// if we want a depth buffer, create it, and attach to our main fbo
if(settings.useDepth){
depthBuffer = createAndAttachRenderbuffer(GL_DEPTH_COMPONENT, GL_DEPTH_ATTACHMENT);
retainRB(depthBuffer);
}
// if we want a stencil buffer, create it, and attach to our main fbo
if(settings.useStencil){
stencilBuffer = createAndAttachRenderbuffer(GL_STENCIL_INDEX, GL_STENCIL_ATTACHMENT);
retainRB(stencilBuffer);
}
}
// if we want MSAA, create a new fbo for textures
#ifndef TARGET_OPENGLES
if(settings.numSamples){
glGenFramebuffers(1, &fboTextures);
retainFB(fboTextures);
}else{
fboTextures = fbo;
}
#else
fboTextures = fbo;
if(settings.numSamples){
ofLog(OF_LOG_WARNING,"ofFbo: multisampling not supported in opengles");
}
#endif
// now create all textures and color buffers
for(int i=0; i<settings.numColorbuffers; i++) createAndAttachTexture(i);
// if textures are attached to a different fbo (e.g. if using MSAA) check it's status
if(fbo != fboTextures) {
glBindFramebuffer(GL_FRAMEBUFFER, fboTextures);
}
// check everything is ok with this fbo
checkStatus();
// unbind it
unbind();
}
开发者ID:aleonard,项目名称:KinectWorkshop,代码行数:67,代码来源:ofFbo.cpp
示例10: OSPL_MAIN
int OSPL_MAIN (int argc, char *argv[])
{
DDS_Subscriber QueryConditionDataSubscriber;
DDS_DataReader QueryConditionDataDataReader;
StockMarket_Stock* QueryConditionDataSample;
DDS_sequence_StockMarket_Stock* msgList = DDS_sequence_StockMarket_Stock__alloc();
DDS_SampleInfoSeq* infoSeq = DDS_SampleInfoSeq__alloc();
c_bool isClosed = FALSE;
unsigned long j;
DDS_char* QueryConditionDataToSubscribe;
DDS_char *query_string = "ticker=%0";
DDS_QueryCondition queryCondition;
os_time delay_200ms = { 0, 200000000 };
int count = 0;
// usage : QueryConditionSubscriber <topic's content filtering string>
if( argc < 2 )
{
usage();
}
printf("\n\n Starting QueryConditionSubscriber...");
printf("\n\n Parameter is \"%s\"", argv[1]);
QueryConditionDataToSubscribe = argv[1];
createParticipant("QueryCondition example");
// Register Stock Topic's type in the DDS Domain.
g_StockTypeSupport = (DDS_TypeSupport) StockMarket_StockTypeSupport__alloc();
checkHandle(g_StockTypeSupport, "StockMarket_StockTypeSupport__alloc");
registerStockType(g_StockTypeSupport);
// Create Stock Topic in the DDS Domain.
g_StockTypeName = StockMarket_StockTypeSupport_get_type_name(g_StockTypeSupport);
g_StockTopic = createTopic("StockTrackerExclusive", g_StockTypeName);
DDS_free(g_StockTypeName);
DDS_free(g_StockTypeSupport);
// Create the Subscriber's in the DDS Domain.
QueryConditionDataSubscriber = createSubscriber();
// Request a Reader from the the Subscriber.
QueryConditionDataDataReader = createDataReader(QueryConditionDataSubscriber, g_StockTopic);
// Create QueryCondition
printf( "\n=== [QueryConditionSubscriber] Query : ticker = %s\n", QueryConditionDataToSubscribe );
queryCondition = createQueryCondition(QueryConditionDataDataReader, query_string, (DDS_char*) QueryConditionDataToSubscribe);
printf( "\n=== [QueryConditionSubscriber] Ready..." );
do
{
g_status = StockMarket_StockDataReader_take_w_condition(QueryConditionDataDataReader,
msgList,
infoSeq,
DDS_LENGTH_UNLIMITED,
queryCondition);
checkStatus(g_status, "StockMarket_StockDataReaderView_take");
if( msgList->_length > 0 )
{
j = 0;
do
{
QueryConditionDataSample = &msgList->_buffer[j];
// When is this supposed to happen?
// Needs comment...
if( infoSeq->_buffer[j].valid_data )
{
printf("\n\n %s: %f", QueryConditionDataSample->ticker, QueryConditionDataSample->price);
if( QueryConditionDataSample->price == (DDS_float) -1.0f )
{
printf("\n ===[QueryConditionSubscriber] QueryConditionDataSample->price == -1.0f ");
isClosed = TRUE;
}
}
}
while( ++j < msgList->_length );
g_status = StockMarket_StockDataReader_return_loan(QueryConditionDataDataReader, msgList, infoSeq);
checkStatus(g_status, "StockMarket_StockDataReaderView_return_loan");
}
os_nanoSleep(delay_200ms);
++count;
}
while( isClosed == FALSE && count < 1500 );
printf("\n\n=== [QueryConditionSubscriber] Market Closed");
// Cleanup DDS from the created Entities.
deleteQueryCondition(QueryConditionDataDataReader, queryCondition);
deleteDataReader(QueryConditionDataSubscriber, QueryConditionDataDataReader);
deleteSubscriber(QueryConditionDataSubscriber);
deleteTopic(g_StockTopic);
deleteParticipant();
// Cleanup C allocations,
// recursively freeing the allocated structures and sequences using the OpenSplice API.
DDS_free(msgList);
DDS_free(infoSeq);
//.........这里部分代码省略.........
开发者ID:S73417H,项目名称:opensplice,代码行数:101,代码来源:QueryConditionDataSubscriber.c
示例11: deleteTopic
void deleteTopic(DDS_Topic topic)
{
g_status = DDS_DomainParticipant_delete_topic(g_domainParticipant, topic);
checkStatus(g_status, "DDS_DomainParticipant_delete_topic");
}
开发者ID:xrl,项目名称:opensplice_dds,代码行数:5,代码来源:DDSEntitiesManager.c
示例12: main
int main(int argc, char *argv[])
{
DDS_sequence_HelloWorldData_Msg* message_seq = DDS_sequence_HelloWorldData_Msg__alloc();
DDS_SampleInfoSeq* message_infoSeq = DDS_SampleInfoSeq__alloc();
DDS_Subscriber message_Subscriber;
DDS_DataReader message_DataReader;
c_bool isClosed = FALSE;
int count = 0;
os_time os_delay200 = { 0, 200000000 };
// Create DDS DomainParticipant
createParticipant("HelloWorld example");
// Register the Topic's type in the DDS Domain.
g_MessageTypeSupport = HelloWorldData_MsgTypeSupport__alloc();
checkHandle(g_MessageTypeSupport, "HelloWorldData_MsgTypeSupport__alloc");
registerMessageType(g_MessageTypeSupport);
// Create the Topic's in the DDS Domain.
g_MessageTypeName = (char*) HelloWorldData_MsgTypeSupport_get_type_name(g_MessageTypeSupport);
g_MessageTopic = createTopic("HelloWorldData_Msg", g_MessageTypeName);
DDS_free(g_MessageTypeName);
DDS_free(g_MessageTypeSupport);
// Create the Subscriber's in the DDS Domain.
message_Subscriber = createSubscriber("HelloWorld");
// Request a Reader from the the Subscriber.
message_DataReader = createDataReader(message_Subscriber, g_MessageTopic);
printf("\n=== [Subscriber] Ready ...");
do
{
g_status = HelloWorldData_MsgDataReader_take(
message_DataReader,
message_seq,
message_infoSeq,
1,
DDS_ANY_SAMPLE_STATE,
DDS_ANY_VIEW_STATE,
DDS_ANY_INSTANCE_STATE );
checkStatus(g_status, "HelloWorldData_MsgDataReader_take");
if( message_seq->_length > 0 && message_infoSeq->_buffer[0].valid_data )
{
isClosed = TRUE;
printf("\n=== [Subscriber] message received :" );
printf( "\n userID : %d", message_seq->_buffer[0].userID );
printf( "\n Message : \"%s\"\n", message_seq->_buffer[0].message );
HelloWorldData_MsgDataReader_return_loan (message_DataReader, message_seq, message_infoSeq);
}
if(isClosed == FALSE)
{
os_nanoSleep(os_delay200);
++count;
}
}
while( isClosed == FALSE && count < 1500 );
os_nanoSleep(os_delay200);
// Cleanup DDS from the created Entities.
deleteDataReader(message_Subscriber, message_DataReader);
deleteSubscriber(message_Subscriber);
deleteTopic(g_MessageTopic);
deleteParticipant();
// Cleanup C allocations
// Recursively free the instances sequence using the OpenSplice API.
DDS_free(message_seq);
DDS_free(message_infoSeq);
return 0;
}
开发者ID:xrl,项目名称:opensplice_dds,代码行数:76,代码来源:HelloWorldDataSubscriber.c
示例13: clear
//.........这里部分代码省略.........
GLint previousFboId = 0;
// note that we are using a glGetInteger method here, which may stall the pipeline.
// in the allocate() method, this is not that tragic since this will not be called
// within the draw() loop. Here, we need not optimise for performance, but for
// simplicity and readability .
glGetIntegerv(GL_FRAMEBUFFER_BINDING, &previousFboId);
glBindFramebuffer(GL_FRAMEBUFFER, fbo);
//- USE REGULAR RENDER BUFFER
if(!_settings.depthStencilAsTexture){
if(_settings.useDepth && _settings.useStencil){
stencilBuffer = depthBuffer = createAndAttachRenderbuffer(_settings.depthStencilInternalFormat, depthAttachment);
retainRB(stencilBuffer);
retainRB(depthBuffer);
}else if(_settings.useDepth){
depthBuffer = createAndAttachRenderbuffer(_settings.depthStencilInternalFormat, depthAttachment);
retainRB(depthBuffer);
}else if(_settings.useStencil){
stencilBuffer = createAndAttachRenderbuffer(_settings.depthStencilInternalFormat, depthAttachment);
retainRB(stencilBuffer);
}
//- INSTEAD USE TEXTURE
}else{
if(_settings.useDepth || _settings.useStencil){
createAndAttachDepthStencilTexture(_settings.textureTarget,_settings.depthStencilInternalFormat,depthAttachment);
#ifdef TARGET_OPENGLES
// if there's depth and stencil the texture should be attached as
// depth and stencil attachments
// http://www.khronos.org/registry/gles/extensions/OES/OES_packed_depth_stencil.txt
if(_settings.useDepth && _settings.useStencil){
glFramebufferTexture2D(GL_FRAMEBUFFER,
GL_STENCIL_ATTACHMENT,
GL_TEXTURE_2D, depthBufferTex.texData.textureID, 0);
}
#endif
}
}
settings.useDepth = _settings.useDepth;
settings.useStencil = _settings.useStencil;
settings.depthStencilInternalFormat = _settings.depthStencilInternalFormat;
settings.depthStencilAsTexture = _settings.depthStencilAsTexture;
settings.textureTarget = _settings.textureTarget;
settings.wrapModeHorizontal = _settings.wrapModeHorizontal;
settings.wrapModeVertical = _settings.wrapModeVertical;
settings.maxFilter = _settings.maxFilter;
settings.minFilter = _settings.minFilter;
// if we want MSAA, create a new fbo for textures
#ifndef TARGET_OPENGLES
if(_settings.numSamples){
glGenFramebuffers(1, &fboTextures);
retainFB(fboTextures);
}else{
fboTextures = fbo;
}
#else
fboTextures = fbo;
if(_settings.numSamples){
ofLogWarning("ofFbo") << "allocate(): multisampling not supported in OpenGL ES";
}
#endif
// now create all textures and color buffers
if(_settings.colorFormats.size() > 0) {
for(int i=0; i<(int)_settings.colorFormats.size(); i++) createAndAttachTexture(_settings.colorFormats[i], i);
} else if(_settings.numColorbuffers > 0) {
for(int i=0; i<_settings.numColorbuffers; i++) createAndAttachTexture(_settings.internalformat, i);
_settings.colorFormats = settings.colorFormats;
} else {
ofLogWarning("ofFbo") << "allocate(): no color buffers specified for frame buffer object " << fbo;
}
settings.internalformat = _settings.internalformat;
dirty.resize(_settings.colorFormats.size(), true); // we start with all color buffers dirty.
// if textures are attached to a different fbo (e.g. if using MSAA) check it's status
if(fbo != fboTextures) {
glBindFramebuffer(GL_FRAMEBUFFER, fboTextures);
}
// check everything is ok with this fbo
bIsAllocated = checkStatus();
// restore previous framebuffer id
glBindFramebuffer(GL_FRAMEBUFFER, previousFboId);
/* UNCOMMENT OUTSIDE OF DOING RELEASES
// this should never happen
if(settings != _settings) ofLogWarning("ofFbo") << "allocation not complete, passed settings not equal to created ones, this is an internal OF bug";
*/
#ifdef TARGET_ANDROID
ofAddListener(ofxAndroidEvents().reloadGL,this,&ofFbo::reloadFbo);
#endif
}
开发者ID:jvcleave,项目名称:compare,代码行数:101,代码来源:ofFbo.cpp
示例14: PluginMessageEventHook
// 'Pings' the FlashThread to keep the LEDs flashing.
static int PluginMessageEventHook(WPARAM hContact, LPARAM lParam)
{
HANDLE hEvent = (HANDLE)lParam;
//get DBEVENTINFO without pBlob
DBEVENTINFO einfo = { sizeof(einfo) };
if (!db_event_get(hEvent, &einfo) && !(einfo.flags & DBEF_SENT))
if ((einfo.eventType == EVENTTYPE_MESSAGE && bFlashOnMsg && checkOpenWindow(hContact) && checkMsgTimestamp(hContact, hEvent, einfo.timestamp)) ||
(einfo.eventType == EVENTTYPE_URL && bFlashOnURL) ||
(einfo.eventType == EVENTTYPE_FILE && bFlashOnFile) ||
(einfo.eventType != EVENTTYPE_MESSAGE && einfo.eventType != EVENTTYPE_URL && einfo.eventType != EVENTTYPE_FILE && bFlashOnOther)) {
if (contactCheckProtocol(einfo.szModule, hContact, einfo.eventType) && checkNotifyOptions() && checkStatus(einfo.szModule) && checkXstatus(einfo.szModule))
SetEvent(hFlashEvent);
}
return 0;
}
开发者ID:0xmono,项目名称:miranda-ng,代码行数:20,代码来源:main.cpp
示例15: ReminderTimer
static VOID CALLBACK ReminderTimer(HWND hwnd, UINT message, UINT_PTR idEvent, DWORD dwTime)
{
int nIndex;
CLISTEVENT *pCLEvent;
if (!bReminderDisabled && nExternCount && bFlashOnOther) {
SetEvent(hFlashEvent);
return;
}
for (nIndex = 0; !bReminderDisabled && (pCLEvent = (CLISTEVENT*)CallService(MS_CLIST_GETEVENT, -1, nIndex)); nIndex++) {
DBEVENTINFO einfo = readEventInfo(pCLEvent->hDbEvent, pCLEvent->hContact);
if ((einfo.eventType == EVENTTYPE_MESSAGE && bFlashOnMsg) ||
(einfo.eventType == EVENTTYPE_URL && bFlashOnURL) ||
(einfo.eventType == EVENTTYPE_FILE && bFlashOnFile) ||
(einfo.eventType != EVENTTYPE_MESSAGE && einfo.eventType != EVENTTYPE_URL && einfo.eventType != EVENTTYPE_FILE && bFlashOnOther))
if (metaCheckProtocol(einfo.szModule, pCLEvent->hContact, einfo.eventType) && checkNotifyOptions() && checkStatus(einfo.szModule) && checkXstatus(einfo.szModule)) {
SetEvent(hFlashEvent);
return;
}
}
}
开发者ID:0xmono,项目名称:miranda-ng,代码行数:26,代码来源:main.cpp
示例16: main
main(int argc, const char *argv[])
{
os_time os_delay_500ms = { 0, 500000000 };
os_time os_delay_200ms = { 0, 200000000 };
os_time os_delay_2ms = { 0, 2000000 };
int x, i;
DDS_boolean autodispose_unregistered_instances = FALSE;
DDS_Publisher writerStatePublisher;
DDS_DataWriter writerStateWriter;
DDS_Publisher msgPublisher;
DDS_DataWriter msgWriter;
DDS_DataWriter msgWriter_stopper;
int messageLength;
LifecycleData_Msg *sample_Msg;
// Force the output to be unbuffered.
setbuf(stdout, (char *) 0);
printf("\n\n Starting LifecyclePublisher...");
if( argc < 3 )
{
usage();
}
if ((strcmp(argv[1], "false") != 0) &&
(strcmp(argv[1], "true") != 0) &&
(strcmp(argv[2], "dispose") != 0) &&
(strcmp(argv[2], "unregister") != 0) &&
(strcmp(argv[2], "stoppub") != 0))
{
usage();
}
autodispose_unregistered_instances = (strcmp(argv[1], "true") == 0);
// First initialize the Topics and their DDS Entities
// Create DDS DomainParticipant
createParticipant("Lifecycle example");
//------------------ Msg topic --------------------//
// Register Msg Topic's type in the DDS Domain.
g_msgTypeSupport = LifecycleData_MsgTypeSupport__alloc();
checkHandle(g_msgTypeSupport, "LifecycleData_MsgTypeSupport__alloc");
registerMsgType(g_msgTypeSupport);
// Create Msg Topic in the DDS Domain.
g_msgTypeName = (char*) LifecycleData_MsgTypeSupport_get_type_name(g_msgTypeSupport);
g_msgTopic = createTopic("Lifecycle_Msg", g_msgTypeName);
DDS_free(g_msgTypeName);
DDS_free(g_msgTypeSupport);
// Create the Publisher's in the DDS Domain.
msgPublisher = createPublisher();
// Request a Writer from the the Publisher.
msgWriter = createDataWriter(msgPublisher, g_msgTopic, autodispose_unregistered_instances);
msgWriter_stopper = createDataWriter(msgPublisher, g_msgTopic, autodispose_unregistered_instances);
//End initialization.
os_nanoSleep(os_delay_200ms);
// Start publishing...
printf("\n=== [Publisher] Ready...");
if (strcmp(argv[2], "dispose") == 0)
{
// Publish a Msg Sample and dispose the instance
LifecycleData_Msg *sample_Msg = LifecycleData_Msg__alloc();
sample_Msg->userID = 1;
messageLength = strlen("Lifecycle_1");
sample_Msg->message = DDS_string_alloc(messageLength);
snprintf(sample_Msg->message, messageLength + 1, "%s", "Lifecycle_1");
messageLength = strlen("SAMPLE_SENT -> INSTANCE_DISPOSED -> DATAWRITER_DELETED");
sample_Msg->writerStates = DDS_string_alloc(messageLength);
snprintf(sample_Msg->writerStates, messageLength + 1, "%s", "SAMPLE_SENT -> INSTANCE_DISPOSED -> DATAWRITER_DELETED");
printf("\n=== [Publisher] :");
printf("\n userID : %d", sample_Msg->userID);
printf("\n Message : %s", sample_Msg->message);
printf("\n writerStates : %s", sample_Msg->writerStates);
g_status = LifecycleData_MsgDataWriter_write(msgWriter, sample_Msg, 0);
checkStatus(g_status, "MsgDataWriter_write");
os_nanoSleep(os_delay_500ms);
printf("\n=== [Publisher] : SAMPLE_SENT");
// Dispose instance
g_status = LifecycleData_MsgDataWriter_dispose(msgWriter, sample_Msg, 0);
checkStatus(g_status, "LifecycleData_MsgDataWriter_dispose");
printf("\n=== [Publisher] : INSTANCE_DISPOSED");
// OpenSplice will recursively free the content of the sample,
// provided it has all been allocated through the DDS_xxxx_alloc API...
DDS_free(sample_Msg);
}
else if (strcmp(argv[2], "unregister") == 0)
{
// Publish a Msg Sample and unregister the instance
//.........这里部分代码省略.........
开发者ID:diorahman,项目名称:opensplice,代码行数:101,代码来源:LifecycleDataPublisher.c
示例17: checkStatus
void BlrFromMessage::buildBlr(IMessageMetadata* metadata)
{
if (!metadata)
return;
LocalStatus st;
expectedMessageLength = metadata->getMessageLength(&st);
checkStatus(&st);
getBlrData().clear();
const unsigned count = metadata->getCount(&st);
fb_assert(count < MAX_USHORT / 2);
if (count == 0)
return; // If there isn't an SQLDA, don't bother with anything else.
appendVersion();
appendUChar(blr_begin);
appendUChar(blr_message);
appendUChar(0);
appendUShort(count * 2);
unsigned msgLen = 0;
for (unsigned i = 0; i < count; ++i)
{
unsigned dtype = metadata->getType(&st, i) & ~1;
checkStatus(&st);
unsigned len = metadata->getLength(&st, i);
checkStatus(&st);
unsigned scale = metadata->getScale(&st, i);
checkStatus(&st);
unsigned charSet = metadata->getCharSet(&st, i);
checkStatus(&st);
switch (dtype)
{
case SQL_VARYING:
appendUChar(blr_varying2);
appendUShort(charSet);
appendUShort(len);
dtype = dtype_varying;
len += sizeof(USHORT);
break;
case SQL_TEXT:
appendUChar(blr_text2);
appendUShort(charSet);
appendUShort(len);
dtype = dtype_text;
break;
case SQL_DOUBLE:
appendUChar(blr_double);
dtype = dtype_double;
break;
case SQL_FLOAT:
appendUChar(blr_float);
dtype = dtype_real;
break;
case SQL_D_FLOAT:
appendUChar(blr_d_float);
dtype = dtype_d_float;
break;
case SQL_TYPE_DATE:
appendUChar(blr_sql_date);
dtype = dtype_sql_date;
break;
case SQL_TYPE_TIME:
appendUChar(blr_sql_time);
dtype = dtype_sql_time;
break;
case SQL_TIMESTAMP:
appendUChar(blr_timestamp);
dtype = dtype_timestamp;
break;
case SQL_BLOB:
appendUChar(blr_blob2);
appendUShort(metadata->getSubType(&st, i));
appendUShort(charSet);
dtype = dtype_blob;
break;
case SQL_ARRAY:
appendUChar(blr_quad);
appendUChar(0);
dtype = dtype_array;
break;
case SQL_LONG:
appendUChar(blr_long);
appendUChar(scale);
//.........这里部分代码省略.........
开发者ID:narolez571,项目名称:firebird,代码行数:101,代码来源:BlrFromMessage.cpp
示例18: checkHandle
DDS::Topic_ptr
DDS::ExtDomainParticipantImpl::create_simulated_multitopic (
const char *,
const char * type_name,
const char *,
const DDS::StringSeq & expression_parameters)
{
/* Type-specific DDS entities */
Chat::ChatMessageDataReader_ptr chatMessageDR;
Chat::NameServiceDataReader_ptr nameServiceDR;
Chat::NamedMessageDataWriter_ptr namedMessageDW;
/* Query related stuff */
DDS::QueryCondition_ptr nameFinder;
/* QosPolicy holders */
DDS::TopicQos namedMessageQos;
DDS::SubscriberQos sub_qos;
DDS::PublisherQos pub_qos;
/* Others */
DDS::DataReader_ptr parentReader;
DDS::DataWriter_ptr parentWriter;
char *nameFinderExpr;
const char *partitionName = "ChatRoom";
DDS::ReturnCode_t status;
/* Lookup both components that constitute the multi-topic. */
chatMessageTopic = realParticipant->find_topic("Chat_ChatMessage", DDS::DURATION_INFINITE);
checkHandle(chatMessageTopic.in(), "DDS::DomainParticipant::find_topic (Chat_ChatMessage)");
nameServiceTopic = realParticipant->find_topic("Chat_NameService", DDS::DURATION_INFINITE);
checkHandle(nameServiceTopic.in(), "DDS::DomainParticipant::find_topic (Chat_NameService)");
/* Create a ContentFilteredTopic to filter out our own ChatMessages. */
filteredMessageTopic = realParticipant->create_contentfilteredtopic(
"Chat_FilteredMessage",
chatMessageTopic.in(),
"userID <> %0",
expression_parameters);
checkHandle(filteredMessageTopic.in(), "DDS::DomainParticipant::create_contentfilteredtopic");
/* Adapt the default SubscriberQos to read from the "ChatRoom" Partition. */
status = realParticipant->get_default_subscriber_qos (sub_qos);
checkStatus(status, "DDS::DomainParticipant::get_default_subscriber_qos");
sub_qos.partition.name.length(1);
sub_qos.partition.name[0] = partitionName;
/* Create a private Subscriber for the multitopic simulator. */
multiSub = realParticipant->create_subscriber(sub_qos, NULL, DDS::STATUS_MASK_NONE);
checkHandle(multiSub.in(), "DDS::DomainParticipant::create_subscriber (for multitopic)");
/* Create a DataReader for the FilteredMessage Topic (using the appropriate QoS). */
parentReader = multiSub->create_datareader(
filteredMessageTopic.in(),
DATAREADER_QOS_USE_TOPIC_QOS,
NULL,
DDS::STATUS_MASK_NONE);
checkHandle(parentReader, "DDS::Subscriber::create_datareader (ChatMessage)");
/* Narrow the abstract parent into its typed representative. */
chatMessageDR = Chat::ChatMessageDataReader::_narrow(parentReader);
checkHandle(chatMessageDR, "Chat::ChatMessageDataReader::_narrow");
/* Allocate the DataReaderListener Implementation. */
msgListener = new DDS::DataReaderListenerImpl();
checkHandle(msgListener, "new DDS::DataReaderListenerImpl");
/* Attach the DataReaderListener to the DataReader, only enabling the data_available event. */
status = chatMessageDR->set_listener(msgListener, DDS::DATA_AVAILABLE_STATUS);
checkStatus(status, "DDS::DataReader_set_listener");
/* Create a DataReader for the nameService Topic (using the appropriate QoS). */
parentReader = multiSub->create_datareader(
nameServiceTopic.in(),
DATAREADER_QOS_USE_TOPIC_QOS,
NULL,
DDS::STATUS_MASK_NONE);
checkHandle(parentReader, "DDS::Subscriber::create_datareader (NameService)");
/* Narrow the abstract parent into its typed representative. */
nameServiceDR = Chat::NameServiceDataReader::_narrow(parentReader);
checkHandle(nameServiceDR, "Chat::NameServiceDataReader::_narrow");
/* Define the SQL expression (using a parameterized value). */
nameFinderExpr = "userID = %0";
/* Create a QueryCondition to only read corresponding nameService information by key-value. */
nameFinder = nameServiceDR->create_querycondition(
DDS::ANY_SAMPLE_STATE,
DDS::ANY_VIEW_STATE,
DDS::ANY_INSTANCE_STATE,
nameFinderExpr,
expression_parameters);
checkHandle(nameFinder, "DDS::DataReader::create_querycondition (nameFinder)");
/* Create the Topic that simulates the multi-topic (use Qos from chatMessage).*/
status = chatMessageTopic->get_qos(namedMessageQos);
checkStatus(status, "DDS::Topic::get_qos");
//.........这里部分代码省略.........
开发者ID:xrl,项目名称:opensplice_dds,代码行数:101,代码来源:multitopic.cpp
示例19: return
bool Framebuffer::complete(const ContextState &state)
{
return (checkStatus(state) == GL_FRAMEBUFFER_COMPLETE);
}
开发者ID:brendandahl,项目名称:positron,代码行数:4,代码来源:Framebuffer.cpp
示例20: main
int main(int argc, char *argv[])
{
c_bool isTransient, isPersistent;
c_bool isClosed = FALSE;
unsigned long i, j;
os_time os_delay2000 = { 2, 0 };
DDS_sequence_DurabilityData_Msg* DurabilityData_Msg_Seq = DDS_sequence_DurabilityData_Msg__alloc();
DDS_SampleInfoSeq* DurabilityData_infoSeq = DDS_SampleInfoSeq__alloc();
if( argc < 2 )
{
usage();
}
isTransient = (strcmp(argv[1], "transient") == 0) ? TRUE : FALSE;
isPersistent = (strcmp(argv[1], "persistent") == 0) ? TRUE : FALSE;
if( ! (isTransient || isPersistent) )
{
usage();
}
g_durability_kind = (char*) argv[1];
// Create DDS DomainParticipant
createParticipant("Durability example");
// Register the Topic's type in the DDS Domain.
g_MsgTypeSupport = DurabilityData_MsgTypeSupport__alloc();
checkHandle(g_MsgTypeSupport, "DurabilityData_MsgTypeSupport__alloc");
registerType(g_MsgTypeSupport);
// Create the Topic's in the DDS Domain.
g_MsgTypeName = (char*) DurabilityData_MsgTypeSupport_get_type_name(g_MsgTypeSupport);
createTopic("DurabilityData_Msg", g_MsgTypeName);
DDS_free(g_MsgTypeName);
DDS_free(g_MsgTypeSupport);
// Create the Subscriber's in the DDS Domain.
createSubscriber();
// Request a Reader from the the Subscriber.
createReader();
printf("=== [Subscriber] Ready ...");
// Added a max iteration threshold in order to avoid looping infinitely.
// This is in the case of "persistent" + auto_dispose == TRUE,
// if the user tries to use persistence feature, it won't succeed:
// with this setting value, the Instance is still deleted upon the delete of the Writer,
// even though the persistent setting has been passed on both processes.
i = 0;
do
{
g_status = DurabilityData_MsgDataReader_take(
g_DataReader,
DurabilityData_Msg_Seq,
DurabilityData_infoSeq,
DDS_LENGTH_UNLIMITED,
DDS_ANY_SAMPLE_STATE,
DDS_ANY_VIEW_STATE,
DDS_ANY_INSTANCE_STATE );
checkStatus(g_status, "DurabilityData_MsgDataReader_take");
if( DurabilityData_Msg_Seq->_length > 0 )
{
j = 0;
do
{
if( DurabilityData_infoSeq->_buffer[j].valid_data )
{
printf("\n%s", DurabilityData_Msg_Seq->_buffer[j].content);
if( strcmp(DurabilityData_Msg_Seq->_buffer[j].content, "9") == 0 )
{
isClosed = TRUE;
}
}
}
while( ++j < DurabilityData_Msg_Seq->_length );
DurabilityData_MsgDataReader_return_loan (g_DataReader, DurabilityData_Msg_Seq, DurabilityData_infoSeq);
}
os_nanoSleep(os_delay2000);
}
while( isClosed == FALSE && i++ < 5);
// Cleanup DDS from the created Entities.
deleteDataReader();
deleteSubscriber();
deleteTopic();
deleteParticipant();
// Cleanup C allocations, recursively freeing the allocated structures and sequences using the OpenSplice API.
DDS_free(DurabilityData_Msg_Seq);
DDS_free(DurabilityData_infoSeq);
// Print out an empty line, just to let behind a clean new line for the shell..
printf("\n");
return 0;
}
开发者ID:xrl,项目名称:opensplice_dds,代码行数:100,代码来源:DurabilityDataSubscriber.c
注:本文中的checkStatus函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论