from win32com.server import register
import sys
import pstats
import cProfile

class dataObject(object):
    _public_methods_  = ["method1","method2","startProfile","printStats"]
    _public_attrs_    = []
    _reg_progid_      = "testcall.dataobject"
    _reg_desc_        = "simple test project"
    _reg_clsid_       = "{97dbc38f-44ce-11e2-a5e5-001018107395}"
    
    def __init__(self):
        self.profile = cProfile.Profile()
    
    def method1(self,*args):
        return 0
        
    def method2(self,*args):
        return 0
        
    def startProfile(self):
        self.profile.enable()
        
    def printStats(self,filename=""):
        self.profile.disable()
        f = open(filename, 'w')
        sortby = 'cumulative'
        try:
            pstats.Stats(self.profile, stream=f).strip_dirs().sort_stats(sortby).print_stats()
        except:
            f.write("Nothing was profiled\n")
        f.close()

if __name__=='__main__':
    if len(sys.argv)>1:
        register.UnregisterServer(dataObject)
    else:
        register.UseCommandLine(dataObject)
