)]}'
{"doc/source/specs/time_trigger.rst":[{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"0c9a14fbf16b919226d5ce164cde54d948a86c09","unresolved":false,"context_lines":[{"line_number":23,"context_line":"2. JobStore"},{"line_number":24,"context_line":"    Stores the Job objects and sorts them in ascending order by the next run time and id of operation."},{"line_number":25,"context_line":"3. TimeTrigger"},{"line_number":26,"context_line":"    Provides interface to register and unregister the operatioins and Find the due operations to run."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"See the `doc/images/time_trigger_class_diagram.png` to get more detials."},{"line_number":29,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a68dd71_aed31f5f","line":26,"range":{"start_line":26,"start_character":54,"end_line":26,"end_character":65},"updated":"2016-01-25 06:38:50.000000000","message":"operations","commit_id":"53a9db1b7fa1e9b31bfe197b4a0cf9cc5bf5707f"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"0c9a14fbf16b919226d5ce164cde54d948a86c09","unresolved":false,"context_lines":[{"line_number":25,"context_line":"3. TimeTrigger"},{"line_number":26,"context_line":"    Provides interface to register and unregister the operatioins and Find the due operations to run."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"See the `doc/images/time_trigger_class_diagram.png` to get more detials."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"Data model impact"},{"line_number":31,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a68dd71_4ec38389","line":28,"range":{"start_line":28,"start_character":64,"end_line":28,"end_character":71},"updated":"2016-01-25 06:38:50.000000000","message":"details","commit_id":"53a9db1b7fa1e9b31bfe197b4a0cf9cc5bf5707f"},{"author":{"_account_id":20883,"name":"Yuval Brik","email":"yuval@brik.org.il","username":"yuvalbr"},"change_message_id":"7e280f8717b99fc4a693e07d239e4ca881bb4039","unresolved":false,"context_lines":[{"line_number":18,"context_line":"Proposed Change"},{"line_number":19,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":20,"context_line":"There are 3 classes in the TimeTriger, which are Job, JobStore and TimeTrigger."},{"line_number":21,"context_line":"1. Job"},{"line_number":22,"context_line":"    Encapsulates the operation and computes the next run time for it."},{"line_number":23,"context_line":"2. JobStore"},{"line_number":24,"context_line":"    Stores the Job objects and sorts them in ascending order by the next run time and id of operation."},{"line_number":25,"context_line":"3. TimeTrigger"},{"line_number":26,"context_line":"    Provides interface to register and unregister the operatioins and Find the due operations to run."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"See the `doc/images/time_trigger_class_diagram.png` to get more detials."},{"line_number":29,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa0719c6_8ef24b99","line":26,"range":{"start_line":21,"start_character":0,"end_line":26,"end_character":101},"updated":"2016-03-20 14:23:02.000000000","message":"After consulting with Saggi, as far as I understand, the \u0027next run time\u0027 is for the trigger, not for the operation.\nTherefor, there is no need for a Job or JobStore at all.\nThe TimeTrigger can hold a list of all registered operations, and once it is triggered (using sleep to wait until its next expected run time), it sends to the Executor all of the operations bound to it.","commit_id":"636315b22afd4e62cc9630306335ef1629dbde91"},{"author":{"_account_id":18266,"name":"zengchen","email":"chenzeng2@huawei.com","username":"zengchen"},"change_message_id":"392ca033cdd58e99c5ba8648a9187a4ef90cf756","unresolved":false,"context_lines":[{"line_number":18,"context_line":"Proposed Change"},{"line_number":19,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":20,"context_line":"There are 3 classes in the TimeTriger, which are Job, JobStore and TimeTrigger."},{"line_number":21,"context_line":"1. Job"},{"line_number":22,"context_line":"    Encapsulates the operation and computes the next run time for it."},{"line_number":23,"context_line":"2. JobStore"},{"line_number":24,"context_line":"    Stores the Job objects and sorts them in ascending order by the next run time and id of operation."},{"line_number":25,"context_line":"3. TimeTrigger"},{"line_number":26,"context_line":"    Provides interface to register and unregister the operatioins and Find the due operations to run."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"See the `doc/images/time_trigger_class_diagram.png` to get more detials."},{"line_number":29,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"fa0719c6_ee7147e2","line":26,"range":{"start_line":21,"start_character":0,"end_line":26,"end_character":101},"in_reply_to":"fa0719c6_8ef24b99","updated":"2016-03-20 14:50:02.000000000","message":"sorry. i don\u0027t know why do you get the conclusion that \" the \u0027next run time\u0027 is for the trigger, not for the operation.\n\". actually, the operation just defines what to do, and the trigger defines when to do. the operation is binded with a trigger to tell us when to do it. the time trigger holds a lot of operations, how to \u0027wait and sleep\u0027 for a operation?\n\ni had explained the same questions to saggi. The JobStore do the work as you descibe that \"The TimeTrigger can hold a list of all registered operations\". \n\nmaybe we should find a time to discuss the designs.","commit_id":"636315b22afd4e62cc9630306335ef1629dbde91"}],"doc/source/specs/time_trigger_class_diagram.pu":[{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"0c9a14fbf16b919226d5ce164cde54d948a86c09","unresolved":false,"context_lines":[{"line_number":18,"context_line":"TimeTrigger -- Operation"},{"line_number":19,"context_line":"Job o-- Operation"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"abstract class Operation {"},{"line_number":22,"context_line":"_id: UUID"},{"line_number":23,"context_line":"_name: string"},{"line_number":24,"context_line":"execute()"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"9a68dd71_ae2ebff8","line":21,"range":{"start_line":21,"start_character":15,"end_line":21,"end_character":24},"updated":"2016-01-25 06:38:50.000000000","message":"Please define what sub operations here are actually.","commit_id":"53a9db1b7fa1e9b31bfe197b4a0cf9cc5bf5707f"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"0c9a14fbf16b919226d5ce164cde54d948a86c09","unresolved":false,"context_lines":[{"line_number":27,"context_line":"abstract class BaseTrigger {"},{"line_number":28,"context_line":"_executor: Executor"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"register_operation(op_object, **kwargs)"},{"line_number":31,"context_line":"unregister_operation(op_id)"},{"line_number":32,"context_line":"}"},{"line_number":33,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":2,"id":"9a68dd71_ee1fd7b4","line":30,"range":{"start_line":30,"start_character":19,"end_line":30,"end_character":28},"updated":"2016-01-25 06:38:50.000000000","message":"Is op_object the instance of Operation type?\nif it is, why passing as a parameter while register, shouldn\u0027t this be returned result?","commit_id":"53a9db1b7fa1e9b31bfe197b4a0cf9cc5bf5707f"},{"author":{"_account_id":16203,"name":"zengyingzhe","email":"zengyingzhe@huawei.com","username":"zengyingzhe"},"change_message_id":"0c9a14fbf16b919226d5ce164cde54d948a86c09","unresolved":false,"context_lines":[{"line_number":36,"context_line":"_job_store: JobStore"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"start()"},{"line_number":39,"context_line":"shutdown()"},{"line_number":40,"context_line":"_main_loop()"},{"line_number":41,"context_line":"}"},{"line_number":42,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":2,"id":"9a68dd71_28016206","line":39,"updated":"2016-01-25 06:38:50.000000000","message":"What are the start and shutdown methods used for?","commit_id":"53a9db1b7fa1e9b31bfe197b4a0cf9cc5bf5707f"}]}
