Author: cmpilato
Date: Tue Mar 29 20:18:43 2011
New Revision: 1086717

URL: http://svn.apache.org/viewvc?rev=1086717&view=rev
Log:
Avoid unnecessary abstraction by combined a factor function with its
sole result consumer.

* subversion/svnrdump/load_editor.h,
* subversion/svnrdump/load_editor.c
  (get_dumpstream_loader): Remove, moving all its logic into ...
  (load_dumpstream): ... this, which was renamed from
    'drive_dumpstream_loader' and no longer accepts 'parser' and
    'parse_baton' parmeters.

* subversion/svnrdump/svnrdump.c
  (load_revisions): Just call load_dumpstream() now rather than the
    combination of get_dumpstream_loader() and
    drive_dumpstream_loader().

Modified:
    subversion/trunk/subversion/svnrdump/load_editor.c
    subversion/trunk/subversion/svnrdump/load_editor.h
    subversion/trunk/subversion/svnrdump/svnrdump.c

Modified: subversion/trunk/subversion/svnrdump/load_editor.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/svnrdump/load_editor.c?rev=1086717&r1=1086716&r2=1086717&view=diff
==============================================================================
--- subversion/trunk/subversion/svnrdump/load_editor.c (original)
+++ subversion/trunk/subversion/svnrdump/load_editor.c Tue Mar 29 20:18:43 2011
@@ -589,55 +589,42 @@ close_revision(void *baton)
 }
 
 svn_error_t *
-get_dumpstream_loader(const svn_repos_parse_fns2_t **parser,
-                      void **parse_baton,
-                      svn_ra_session_t *session,
-                      apr_pool_t *pool)
+load_dumpstream(svn_stream_t *stream,
+                svn_ra_session_t *session,
+                svn_cancel_func_t cancel_func,
+                void *cancel_baton,
+                apr_pool_t *pool)
 {
-  svn_repos_parse_fns2_t *pf;
-  struct parse_baton *pb;
-
-  pf = apr_pcalloc(pool, sizeof(*pf));
-  pf->new_revision_record = new_revision_record;
-  pf->uuid_record = uuid_record;
-  pf->new_node_record = new_node_record;
-  pf->set_revision_property = set_revision_property;
-  pf->set_node_property = set_node_property;
-  pf->delete_node_property = delete_node_property;
-  pf->remove_node_props = remove_node_props;
-  pf->set_fulltext = set_fulltext;
-  pf->apply_textdelta = apply_textdelta;
-  pf->close_node = close_node;
-  pf->close_revision = close_revision;
-
-  pb = apr_pcalloc(pool, sizeof(*pb));
-  pb->session = session;
-
-  *parser = pf;
-  *parse_baton = pb;
-
-  return SVN_NO_ERROR;
-}
-
-svn_error_t *
-drive_dumpstream_loader(svn_stream_t *stream,
-                        const svn_repos_parse_fns2_t *parser,
-                        void *parse_baton,
-                        svn_ra_session_t *session,
-                        svn_cancel_func_t cancel_func,
-                        void *cancel_baton,
-                        apr_pool_t *pool)
-{
-  struct parse_baton *pb = parse_baton;
+  svn_repos_parse_fns2_t *parser;
+  struct parse_baton *parse_baton;
   const svn_string_t *lock_string;
   svn_boolean_t be_atomic;
   svn_error_t *err;
+  const char *root_url;
 
   SVN_ERR(svn_ra_has_capability(session, &be_atomic,
                                 SVN_RA_CAPABILITY_ATOMIC_REVPROPS,
                                 pool));
   SVN_ERR(get_lock(&lock_string, session, cancel_func, cancel_baton, pool));
-  SVN_ERR(svn_ra_get_repos_root2(session, &(pb->root_url), pool));
+  SVN_ERR(svn_ra_get_repos_root2(session, &root_url, pool));
+
+  parser = apr_pcalloc(pool, sizeof(*parser));
+  parser->new_revision_record = new_revision_record;
+  parser->uuid_record = uuid_record;
+  parser->new_node_record = new_node_record;
+  parser->set_revision_property = set_revision_property;
+  parser->set_node_property = set_node_property;
+  parser->delete_node_property = delete_node_property;
+  parser->remove_node_props = remove_node_props;
+  parser->set_fulltext = set_fulltext;
+  parser->apply_textdelta = apply_textdelta;
+  parser->close_node = close_node;
+  parser->close_revision = close_revision;
+
+  parse_baton = apr_pcalloc(pool, sizeof(*parse_baton));
+  parse_baton->session = session;
+  parse_baton->root_url = root_url;
+
   err = svn_repos_parse_dumpstream2(stream, parser, parse_baton,
                                     cancel_func, cancel_baton, pool);
 

Modified: subversion/trunk/subversion/svnrdump/load_editor.h
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/svnrdump/load_editor.h?rev=1086717&r1=1086716&r2=1086717&view=diff
==============================================================================
--- subversion/trunk/subversion/svnrdump/load_editor.h (original)
+++ subversion/trunk/subversion/svnrdump/load_editor.h Tue Mar 29 20:18:43 2011
@@ -89,32 +89,16 @@ struct revision_baton
 };
 
 /**
- * Build up a dumpstream parser @a parser (and corresponding baton @a
- * parse_baton) to fire the appropriate callbacks in a commit editor
- * set to commit to session @a session. Use @a pool for all memory
- * allocations.
+ * Load the dumpstream carried in @a stream to the location described
+ * by @a session. Use @a pool for all memory allocations.  Use @a
+ * cancel_func and @a cancel_baton to check for user cancellation of
+ * the operation (for timely-but-safe termination).
  */
 svn_error_t *
-get_dumpstream_loader(const svn_repos_parse_fns2_t **parser,
-                      void **parse_baton,
-                      svn_ra_session_t *session,
-                      apr_pool_t *pool);
-
-/**
- * Drive the dumpstream loader described by @a parser and @a
- * parse_baton to parse and commit the stream @a stream to the
- * location described by @a session. Use @a pool for all memory
- * allocations.  Use @a cancel_func and @a cancel_baton to check for
- * user cancellation of the operation (for timely-but-safe
- * termination).
- */
-svn_error_t *
-drive_dumpstream_loader(svn_stream_t *stream,
-                        const svn_repos_parse_fns2_t *parser,
-                        void *parse_baton,
-                        svn_ra_session_t *session,
-                        svn_cancel_func_t cancel_func,
-                        void *cancel_baton,
-                        apr_pool_t *pool);
+load_dumpstream(svn_stream_t *stream,
+                svn_ra_session_t *session,
+                svn_cancel_func_t cancel_func,
+                void *cancel_baton,
+                apr_pool_t *pool);
 
 #endif

Modified: subversion/trunk/subversion/svnrdump/svnrdump.c
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/svnrdump/svnrdump.c?rev=1086717&r1=1086716&r2=1086717&view=diff
==============================================================================
--- subversion/trunk/subversion/svnrdump/svnrdump.c (original)
+++ subversion/trunk/subversion/svnrdump/svnrdump.c Tue Mar 29 20:18:43 2011
@@ -441,15 +441,12 @@ load_revisions(svn_ra_session_t *session
 {
   apr_file_t *stdin_file;
   svn_stream_t *stdin_stream;
-  const svn_repos_parse_fns2_t *parser;
-  void *parse_baton;
 
   apr_file_open_stdin(&stdin_file, pool);
   stdin_stream = svn_stream_from_aprfile2(stdin_file, FALSE, pool);
 
-  SVN_ERR(get_dumpstream_loader(&parser, &parse_baton, session, pool));
-  SVN_ERR(drive_dumpstream_loader(stdin_stream, parser, parse_baton,
-                                  session, check_cancel, NULL, pool));
+  SVN_ERR(load_dumpstream(stdin_stream, session, check_cancel, 
+                          NULL, pool));
 
   SVN_ERR(svn_stream_close(stdin_stream));
 


Reply via email to