Sirikata
|
00001 /* Sirikata 00002 * Trace.hpp 00003 * 00004 * Copyright (c) 2010, Ewen Cheslack-Postava 00005 * All rights reserved. 00006 * 00007 * Redistribution and use in source and binary forms, with or without 00008 * modification, are permitted provided that the following conditions are 00009 * met: 00010 * * Redistributions of source code must retain the above copyright 00011 * notice, this list of conditions and the following disclaimer. 00012 * * Redistributions in binary form must reproduce the above copyright 00013 * notice, this list of conditions and the following disclaimer in 00014 * the documentation and/or other materials provided with the 00015 * distribution. 00016 * * Neither the name of Sirikata nor the names of its contributors may 00017 * be used to endorse or promote products derived from this software 00018 * without specific prior written permission. 00019 * 00020 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS 00021 * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 00022 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 00023 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER 00024 * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 00025 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 00026 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 00027 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 00028 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 00029 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 00030 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00031 */ 00032 00033 #ifndef _SIRIKATA_SIMOH_TRACE_HPP_ 00034 #define _SIRIKATA_SIMOH_TRACE_HPP_ 00035 00036 #include <sirikata/space/Platform.hpp> 00037 #include <sirikata/core/trace/Trace.hpp> 00038 #include <sirikata/core/util/MotionVector.hpp> 00039 #include <sirikata/space/OSegLookupTraceToken.hpp> 00040 00041 namespace Sirikata { 00042 00043 class SIRIKATA_SPACE_EXPORT SpaceTrace { 00044 public: 00045 SpaceTrace(Trace::Trace* _trace) 00046 : mTrace(_trace) 00047 { 00048 }; 00049 00050 static void InitOptions(); 00051 00052 // OSeg 00053 CREATE_TRACE_DECL(objectSegmentationCraqLookupRequest, const Time& t, const UUID& obj_id, const ServerID &sID_lookupTo); 00054 CREATE_TRACE_DECL(objectSegmentationLookupNotOnServerRequest, const Time& t, const UUID& obj_id, const ServerID &sID_lookupTo); 00055 CREATE_TRACE_DECL(objectSegmentationProcessedRequest, const Time&t, const UUID& obj_id, const ServerID &sID, const ServerID & sID_processor, uint32 dTime, uint32 stillInQueue); 00056 CREATE_TRACE_DECL(processOSegTrackedSetResults, const Time &t, const UUID& obj_id, const ServerID& sID_migratingTo, const Duration& dur); 00057 CREATE_TRACE_DECL(processOSegShutdownEvents, const Time &t, const ServerID& sID, const int& num_lookups, const int& num_on_this_server, const int& num_cache_hits, const int& num_craq_lookups, const int& num_time_elapsed_cache_eviction, const int& num_migration_not_complete_yet); 00058 CREATE_TRACE_DECL(osegCacheResponse, const Time &t, const ServerID& sID, const UUID& obj); 00059 CREATE_TRACE_DECL(osegCumulativeResponse, const Time &t, OSegLookupTraceToken* traceToken); 00060 00061 // Migration 00062 CREATE_TRACE_DECL(objectBeginMigrate, const Time& t, const UUID& ojb_id, const ServerID migrate_from, const ServerID migrate_to); 00063 CREATE_TRACE_DECL(objectAcknowledgeMigrate, const Time& t, const UUID& obj_id, const ServerID& acknowledge_from,const ServerID& acknowledge_to); 00064 CREATE_TRACE_DECL(objectMigrationRoundTrip, const Time& t, const UUID& obj_id, const ServerID &sID_migratingFrom, const ServerID& sID_migratingTo, const Duration& round_trip); 00065 00066 // Datagram 00067 CREATE_TRACE_DECL(serverDatagramQueued, const Time& t, const ServerID& dest, uint64 id, uint32 size); 00068 CREATE_TRACE_DECL(serverDatagramSent, const Time& start_time, const Time& end_time, float weight, const ServerID& dest, uint64 id, uint32 size); 00069 CREATE_TRACE_DECL(serverDatagramReceived, const Time& start_time, const Time& end_time, const ServerID& src, uint64 id, uint32 size); 00070 00071 // Loc/Prox 00072 CREATE_TRACE_DECL(serverLoc, const Time& t, const ServerID& sender, const ServerID& receiver, const UUID& obj, const TimedMotionVector3f& loc); 00073 CREATE_TRACE_DECL(serverObjectEvent, const Time& t, const ServerID& source, const ServerID& dest, const UUID& obj, bool added, const TimedMotionVector3f& loc); 00074 00075 // CSeg 00076 CREATE_TRACE_DECL(segmentationChanged, const Time& t, const BoundingBox3f& bbox, const ServerID& serverID); 00077 00078 00079 private: 00080 Trace::Trace* mTrace; 00081 static OptionValue* mLogOSeg; 00082 static OptionValue* mLogOSegCumulative; 00083 static OptionValue* mLogMigration; 00084 static OptionValue* mLogDatagram; 00085 static OptionValue* mLogLocProx; 00086 static OptionValue* mLogCSeg; 00087 }; 00088 00089 // This version of the SPACETRACE macro automatically uses mContext->trace() and 00090 // passes mContext->simTime() as the first argument, which is the most common 00091 // form. 00092 #define CONTEXT_SPACETRACE(___name, ...) \ 00093 TRACE( mContext->spacetrace(), ___name, mContext->simTime(), __VA_ARGS__) 00094 00095 // This version is like the above, but you can specify the time yourself. Use 00096 // this if you already called Context::simTime() recently. (It also works for 00097 // cases where the first parameter is not the current time.) 00098 #define CONTEXT_SPACETRACE_NO_TIME(___name, ...) \ 00099 TRACE( mContext->spacetrace(), ___name, __VA_ARGS__) 00100 00101 00102 } // namespace Sirikata 00103 00104 #endif //_SIRIKATA_SIMOH_TRACE_HPP_