//--------------------------------------------------------------------------------------------------------------------- // Sends an event from the script. Returns true if the event was sent, false if not. //--------------------------------------------------------------------------------------------------------------------- bool InternalScriptExports::TriggerEvent(EventType eventType, LuaPlus::LuaObject eventData) { shared_ptr<ScriptEvent> pEvent(BuildEvent(eventType, eventData)); if (pEvent) return IEventManager::Get()->VTriggerEvent(pEvent); return false; }
//--------------------------------------------------------------------------------------------------------------------- // Sends an event from the script. Returns true if the event was sent, false if not. //--------------------------------------------------------------------------------------------------------------------- bool InternalScriptExports::TriggerEvent(EventType eventType, sol::object eventData) { std::shared_ptr<ScriptEvent> pEvent(BuildEvent(eventType, eventData)); if (pEvent) return false; // EngineSubsystems::getInstance().m_pEventManager->VTriggerEvent(pEvent); return false; }
// queue an event from lua script bool LuaInternalScriptExports::QueueEvent(EventType eventType, LuaPlus::LuaObject eventData) { shared_ptr<LuaScriptEvent> pEvent(BuildEvent(eventType, eventData)); if (pEvent) { IEventManager::Get()->QueueEvent(pEvent); return true; } return false; }
/* ARGSUSED */ static void GetClientValue(Widget w, XtPointer data, Atom *selection, Atom *type, XtPointer value, unsigned long *length, int *format) { Event *event; ProtocolStream alloc_stream; ProtocolStream *stream; unsigned char ident; unsigned char error_code; char *error_str; char msg[BUFSIZ]; /* type should be checked if XT_CONVERT_FAIL */ if (*length == 0) { return; } stream = &alloc_stream; /* easier to think of it this way... */ stream->current = stream->top = (unsigned char*)value; stream->size = HEADER_SIZE; /* size of header. */ /* * Retrieve the Header. */ if (*length < HEADER_SIZE) { /* "Incorrectly formatted message from client" */ SetMessage(global_screen_data.info_label, res_labels[9], "Incorrectly formatted message from client"); return; } (void)_XEditResGet8(stream, &ident); if (global_client.ident != ident) { #ifdef DEBUG if (global_resources.debug) { printf("Incorrect ident from client.\n"); } #endif /* DEBUG */ if (!XtOwnSelection(w, *selection, CurrentTime, ConvertCommand, LoseSelection, SelectionDone)) { /* "Unable to own the Resource Editor Command Selection" */ SetMessage(global_screen_data.info_label, res_labels[10], "Unable to own the Resource Editor Command Selection"); } return; } /* if (global_client.ident != ident) */ (void)_XEditResGet8(stream, &error_code); (void)_XEditResGet32(stream, &(stream->size)); stream->top = stream->current; /* reset stream to top of value.*/ switch ((int)error_code) { case PartialSuccess: /***** if (global_client.command == LocalSendWidgetTree && global_effective_protocol_version < CURRENT_PROTOCOL_VERSION) { ++global_effective_protocol_version; } *****/ if ((event = BuildEvent(stream)) != NULL) { error_str = DispatchEvent(event); FreeEvent(event); } else { sprintf(msg, "Unable to unpack protocol request."); error_str = XtNewString(msg); } break; /* PartialSuccess */ case Failure: error_str = GetFailureMessage(stream); break; /* Failure */ case ProtocolMismatch: error_str = ProtocolFailure(stream); --global_effective_protocol_version; /* normaly protocol version is reset to current during a SendWidgetTree * request, however, after a protocol failure this is skiped once for * a retry. */ reset_protocol_level = False; SetCommand(w, LocalSendWidgetTree, NULL); break; /* ProtocolMismatch */ default: /* "Unknown Error code %s" */ if (res_labels[11]) { sprintf(msg, res_labels[11], (int)error_code); } else { sprintf(msg, "Unknown Error code %i", (int)error_code); } SetMessage(global_screen_data.info_label, msg, "?res_labels[11]"); break; /* default */ } /* switch (error_code) */ if (error_str == NULL) { WNode *top; if (global_tree_info == NULL) { return; } top = global_tree_info->top_node; /* "Widget/Style tree for client %s (%s)" */ if (res_labels[12]) { sprintf(msg, res_labels[12], top->name, top->class); } else {
/* Main function */ int main(int argc, char** argv) { if( BeginJob( argc, argv ) == 0 ) { cout<<"BeginJob failed"<<endl; return 0; } /* Layer 1. The main loop over every stream entries */ /* ------------------------------------------------ */ CurrRun.Run = -1; cout<<"StreamChain add "<<StreamChain<<endl; unsigned int entries = StreamChain->GetEntries(); for( unsigned int entry=0; entry<entries; entry++ ) { unsigned int localentry = StreamChain->LoadTree(entry); int ret = Reader->GetEntry( localentry ); if( ret==0 ) { cout<<"Error: Read error"<<endl; return 1; } /* Process run information and possible long time jump */ if( Reader->Run != CurrRun.Run ) { if( CurrRun.Run != -1 ) { /* End Run */ if( EndRun( Reader ) == 0 ) { cout<<"EndRun failed"<<endl; return 0; } } /* Begin Run */ if( BeginRun( Reader ) == 0 ) { cout<<"BeginRun failed"<<endl; return 0; } } /*** Test each entry here ***/ SubEvt* pSubEvt = new SubEvt( Reader ); TimeStamp NewTime( pSubEvt->TrigSec, pSubEvt->TrigNano ); if( (NewTime - CurrRun.CurrTime).GetSeconds() > 120 /* Two minutes */ ) { CurrRun.Breaks.push_back( CurrRun.CurrTime ); CurrRun.Breaks.push_back( NewTime ); CurrRun.SkipTime.Add( (NewTime - CurrRun.CurrTime).GetSeconds() ); } CurrRun.CurrTime = NewTime; /* Cache all temporal related event. Give a chance to clean up the queue and do muon Id */ SubEvtQueue PassedQueue = CachedQueueInsert( NewTime, pSubEvt ); /* Layer 2. The main loop over every non-muon SubEvt */ /* ------------------------------------------------- */ SubEvtQueueIterator it, it_end = PassedQueue.end(); for( it = PassedQueue.begin(); it != it_end; it++ ) { /* Build delay coincident event */ SubEvt* pSubEvt = it->second; int ret = BuildEvent( pSubEvt ); if( ret == 0 ) { cout<<"Error in BuildEvent"<<endl; } delete pSubEvt; } /*** End of SubEvt loop ***/ } /*** End of stream entry loop ***/ if( EndRun( Reader ) == 0 ) { cout<<"EndRun failed"<<endl; return 0; } /* End Job */ /* ------- */ if( EndJob() == 0 ) { cout<<"BeginJob failed"<<endl; return 0; } return 1; }
/* ARGSUSED */ static void GetClientValue(Widget w, XtPointer data, Atom *selection, Atom *type, XtPointer value, unsigned long *length, int *format) { Event * event; ProtocolStream alloc_stream, *stream; unsigned char ident, error_code; char * error_str = NULL, msg[BUFSIZ]; if (*length == 0) return; stream = &alloc_stream; /* easier to think of it this way... */ stream->current = stream->top = (unsigned char *) value; stream->size = HEADER_SIZE; /* size of header. */ /* * Retrieve the Header. */ if (*length < HEADER_SIZE) { SetMessage(global_screen_data.info_label, res_labels[9]); return; } (void) _XEditResGet8(stream, &ident); if (global_client.ident != ident) { #ifdef DEBUG if (global_resources.debug) printf("Incorrect ident from client.\n"); #endif if (!XtOwnSelection(w, *selection, CurrentTime, ConvertCommand, LoseSelection, SelectionDone)) SetMessage(global_screen_data.info_label, res_labels[10]); return; } (void) _XEditResGet8(stream, &error_code); (void) _XEditResGet32(stream, &(stream->size)); stream->top = stream->current; /* reset stream to top of value.*/ switch ((int) error_code) { case PartialSuccess: /***** if (global_client.command == LocalSendWidgetTree && global_effective_protocol_version < CURRENT_PROTOCOL_VERSION) ++global_effective_protocol_version; *****/ if ((event = BuildEvent(stream)) != NULL) { error_str = DispatchEvent(event); FreeEvent(event); } else { sprintf(msg, "Unable to unpack protocol request."); error_str = XtNewString(msg); } break; case Failure: error_str = GetFailureMessage(stream); break; case ProtocolMismatch: error_str = ProtocolFailure(stream); --global_effective_protocol_version; /* normaly protocol version is reset to current during a SendWidgetTree * request, however, after a protocol failure this is skiped once for * a retry. */ reset_protocol_level = False; SetCommand(w, LocalSendWidgetTree, NULL); break; default: sprintf(msg, res_labels[11], (int) error_code); SetMessage(global_screen_data.info_label, msg); break; } if (error_str == NULL) { WNode * top; if (global_tree_info == NULL) return; top = global_tree_info->top_node; sprintf(msg, res_labels[12], top->name, top->class); SetMessage(global_screen_data.info_label, msg); return; }