a
554325746@qq.com
2019-12-25 546d23f0ec50be30824d5a58ff5281ff6e21adbb
a
10个文件已添加
2个文件已修改
732 ■■■■ 已修改文件
.idea/androidSync.iml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/encodings.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/misc.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/modules.xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/vcs.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/workspace.xml 521 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
androidSync-sources.jar 补丁 | 查看 | 原始文档 | blame | 历史
androidSync.aar 补丁 | 查看 | 原始文档 | blame | 历史
b.bat 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cluster.go 54 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
main.go 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
sync.go 82 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.idea/androidSync.iml
New file
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
  <component name="NewModuleRootManager" inherit-compiler-output="true">
    <exclude-output />
    <content url="file://$MODULE_DIR$" />
    <orderEntry type="inheritedJdk" />
    <orderEntry type="sourceFolder" forTests="false" />
  </component>
</module>
.idea/encodings.xml
New file
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="Encoding" addBOMForNewFiles="with NO BOM" />
</project>
.idea/misc.xml
New file
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="JavaScriptSettings">
    <option name="languageLevel" value="ES6" />
  </component>
</project>
.idea/modules.xml
New file
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="ProjectModuleManager">
    <modules>
      <module fileurl="file://$PROJECT_DIR$/.idea/androidSync.iml" filepath="$PROJECT_DIR$/.idea/androidSync.iml" />
    </modules>
  </component>
</project>
.idea/vcs.xml
New file
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="VcsDirectoryMappings">
    <mapping directory="$PROJECT_DIR$" vcs="Git" />
  </component>
</project>
.idea/workspace.xml
New file
@@ -0,0 +1,521 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
  <component name="ChangeListManager">
    <list default="true" id="e3303c4d-ac69-4436-b80e-4e2521d4dcc3" name="Default Changelist" comment="">
      <change afterPath="$PROJECT_DIR$/.idea/vcs.xml" afterDir="false" />
      <change afterPath="$PROJECT_DIR$/main.go" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/cluster.go" beforeDir="false" afterPath="$PROJECT_DIR$/cluster.go" afterDir="false" />
      <change beforePath="$PROJECT_DIR$/sync.go" beforeDir="false" afterPath="$PROJECT_DIR$/sync.go" afterDir="false" />
    </list>
    <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
    <option name="SHOW_DIALOG" value="false" />
    <option name="HIGHLIGHT_CONFLICTS" value="true" />
    <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
    <option name="LAST_RESOLUTION" value="IGNORE" />
  </component>
  <component name="DatabaseView">
    <option name="SHOW_INTERMEDIATE" value="true" />
    <option name="GROUP_DATA_SOURCES" value="true" />
    <option name="GROUP_SCHEMA" value="true" />
    <option name="GROUP_CONTENTS" value="false" />
    <option name="SORT_POSITIONED" value="false" />
    <option name="SHOW_EMPTY_GROUPS" value="false" />
    <option name="AUTO_SCROLL_FROM_SOURCE" value="false" />
    <option name="HIDDEN_KINDS">
      <set />
    </option>
    <expand />
    <select />
  </component>
  <component name="DefaultGradleProjectSettings">
    <option name="isMigrated" value="true" />
  </component>
  <component name="FileEditorManager">
    <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
      <file pinned="false" current-in-tab="false">
        <entry file="file://$PROJECT_DIR$/cluster.go">
          <provider selected="true" editor-type-id="text-editor">
            <state relative-caret-position="60">
              <caret line="2" selection-start-line="2" selection-end-line="2" />
              <folding>
                <element signature="e#35#177#0" expanded="true" />
              </folding>
            </state>
          </provider>
        </entry>
      </file>
      <file pinned="false" current-in-tab="true">
        <entry file="file://$PROJECT_DIR$/main.go">
          <provider selected="true" editor-type-id="text-editor">
            <state relative-caret-position="330">
              <caret line="26" lean-forward="true" selection-start-line="26" selection-end-line="26" />
            </state>
          </provider>
        </entry>
      </file>
      <file pinned="false" current-in-tab="false">
        <entry file="file://$PROJECT_DIR$/sync.go">
          <provider selected="true" editor-type-id="text-editor">
            <state relative-caret-position="60">
              <caret line="2" selection-start-line="2" selection-end-line="2" />
            </state>
          </provider>
        </entry>
      </file>
    </leaf>
  </component>
  <component name="FileTemplateManagerImpl">
    <option name="RECENT_TEMPLATES">
      <list>
        <option value="Go File" />
      </list>
    </option>
  </component>
  <component name="FindInProjectRecents">
    <findStrings>
      <find>sdb</find>
      <find>Agent</find>
      <find>memberlist</find>
      <find>members</find>
      <find>config</find>
      <find>serverIp</find>
      <find>lc</find>
      <find>glo</find>
      <find>allResults</find>
      <find>err</find>
      <find>pwd</find>
      <find>SerfDbConn</find>
      <find>yncTables</find>
      <find>SyncTables</find>
      <find>joinCluster</find>
      <find>JoinCluster</find>
      <find>oinCluster</find>
      <find>sqliteDBPath</find>
      <find>defaultSqliteDBPath</find>
      <find>agent</find>
      <find>syncInit</find>
      <find>Error creating Serf</find>
      <find>aaa</find>
    </findStrings>
  </component>
  <component name="GOROOT" path="D:\program\go" />
  <component name="Git.Settings">
    <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
  </component>
  <component name="IdeDocumentHistory">
    <option name="CHANGED_PATHS">
      <list>
        <option value="$PROJECT_DIR$/clusterService.go" />
        <option value="$PROJECT_DIR$/db/db.go" />
        <option value="$PROJECT_DIR$/db/cluster.go" />
        <option value="$PROJECT_DIR$/../basic.com/Android/syncdb.git/agent.go" />
        <option value="$PROJECT_DIR$/sync.go" />
        <option value="$PROJECT_DIR$/cluster.go" />
        <option value="$PROJECT_DIR$/main.go" />
      </list>
    </option>
  </component>
  <component name="ProjectFrameBounds" extendedState="6">
    <option name="x" value="84" />
    <option name="y" value="64" />
    <option name="width" value="1855" />
    <option name="height" value="939" />
  </component>
  <component name="ProjectView">
    <navigator proportions="" version="1">
      <foldersAlwaysOnTop value="true" />
    </navigator>
    <panes>
      <pane id="ProjectPane">
        <subPane>
          <expand>
            <path>
              <item name="androidSync" type="b2602c69:ProjectViewProjectNode" />
              <item name="androidSync" type="462c0819:PsiDirectoryNode" />
            </path>
            <path>
              <item name="androidSync" type="b2602c69:ProjectViewProjectNode" />
              <item name="External Libraries" type="cb654da1:ExternalLibrariesNode" />
            </path>
            <path>
              <item name="androidSync" type="b2602c69:ProjectViewProjectNode" />
              <item name="External Libraries" type="cb654da1:ExternalLibrariesNode" />
              <item name="Go SDK 1.12.6" type="20ee2d1f:SyntheticLibraryElementNode" />
            </path>
            <path>
              <item name="androidSync" type="b2602c69:ProjectViewProjectNode" />
              <item name="External Libraries" type="cb654da1:ExternalLibrariesNode" />
              <item name="Go SDK 1.12.6" type="20ee2d1f:SyntheticLibraryElementNode" />
              <item name="src" type="462c0819:PsiDirectoryNode" />
            </path>
            <path>
              <item name="androidSync" type="b2602c69:ProjectViewProjectNode" />
              <item name="External Libraries" type="cb654da1:ExternalLibrariesNode" />
              <item name="Go SDK 1.12.6" type="20ee2d1f:SyntheticLibraryElementNode" />
              <item name="src" type="462c0819:PsiDirectoryNode" />
              <item name="runtime" type="462c0819:PsiDirectoryNode" />
            </path>
            <path>
              <item name="androidSync" type="b2602c69:ProjectViewProjectNode" />
              <item name="External Libraries" type="cb654da1:ExternalLibrariesNode" />
              <item name="Go SDK 1.12.6" type="20ee2d1f:SyntheticLibraryElementNode" />
              <item name="src" type="462c0819:PsiDirectoryNode" />
              <item name="runtime" type="462c0819:PsiDirectoryNode" />
              <item name="debug" type="462c0819:PsiDirectoryNode" />
            </path>
            <path>
              <item name="androidSync" type="b2602c69:ProjectViewProjectNode" />
              <item name="External Libraries" type="cb654da1:ExternalLibrariesNode" />
              <item name="GOPATH &lt;androidSync&gt;" type="20ee2d1f:SyntheticLibraryElementNode" />
            </path>
            <path>
              <item name="androidSync" type="b2602c69:ProjectViewProjectNode" />
              <item name="External Libraries" type="cb654da1:ExternalLibrariesNode" />
              <item name="GOPATH &lt;androidSync&gt;" type="20ee2d1f:SyntheticLibraryElementNode" />
              <item name="src" type="462c0819:PsiDirectoryNode" />
            </path>
            <path>
              <item name="androidSync" type="b2602c69:ProjectViewProjectNode" />
              <item name="External Libraries" type="cb654da1:ExternalLibrariesNode" />
              <item name="GOPATH &lt;androidSync&gt;" type="20ee2d1f:SyntheticLibraryElementNode" />
              <item name="src" type="462c0819:PsiDirectoryNode" />
              <item name="basic.com" type="462c0819:PsiDirectoryNode" />
            </path>
            <path>
              <item name="androidSync" type="b2602c69:ProjectViewProjectNode" />
              <item name="External Libraries" type="cb654da1:ExternalLibrariesNode" />
              <item name="GOPATH &lt;androidSync&gt;" type="20ee2d1f:SyntheticLibraryElementNode" />
              <item name="src" type="462c0819:PsiDirectoryNode" />
              <item name="basic.com" type="462c0819:PsiDirectoryNode" />
              <item name="Android" type="462c0819:PsiDirectoryNode" />
            </path>
            <path>
              <item name="androidSync" type="b2602c69:ProjectViewProjectNode" />
              <item name="External Libraries" type="cb654da1:ExternalLibrariesNode" />
              <item name="GOPATH &lt;androidSync&gt;" type="20ee2d1f:SyntheticLibraryElementNode" />
              <item name="src" type="462c0819:PsiDirectoryNode" />
              <item name="basic.com" type="462c0819:PsiDirectoryNode" />
              <item name="Android" type="462c0819:PsiDirectoryNode" />
              <item name="syncdb.git" type="462c0819:PsiDirectoryNode" />
            </path>
          </expand>
          <select />
        </subPane>
      </pane>
      <pane id="PackagesPane" />
      <pane id="Scope" />
    </panes>
  </component>
  <component name="PropertiesComponent">
    <property name="ASKED_SHARE_PROJECT_CONFIGURATION_FILES" value="true" />
    <property name="DefaultGoTemplateProperty" value="Go File" />
    <property name="GO_FMT" value="false" />
    <property name="SHARE_PROJECT_CONFIGURATION_FILES" value="true" />
    <property name="WebServerToolWindowFactoryState" value="false" />
    <property name="aspect.path.notification.shown" value="true" />
    <property name="com.android.tools.idea.instantapp.provision.ProvisionBeforeRunTaskProvider.myTimeStamp" value="1576566196392" />
    <property name="go.gopath.indexing.explicitly.defined" value="true" />
    <property name="go.import.settings.migrated" value="true" />
    <property name="go.sdk.automatically.set" value="true" />
    <property name="last_opened_file_path" value="$PROJECT_DIR$" />
    <property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" />
    <property name="nodejs_npm_path_reset_for_default_project" value="true" />
    <property name="nodejs_package_manager_path" value="npm" />
  </component>
  <component name="RunDashboard">
    <option name="ruleStates">
      <list>
        <RuleState>
          <option name="name" value="ConfigurationTypeDashboardGroupingRule" />
        </RuleState>
        <RuleState>
          <option name="name" value="StatusDashboardGroupingRule" />
        </RuleState>
      </list>
    </option>
  </component>
  <component name="RunManager" selected="Go Build.go build androidSync">
    <configuration name="go build androidSync" type="GoApplicationRunConfiguration" factoryName="Go Application" temporary="true" nameIsGenerated="true">
      <module name="androidSync" />
      <working_directory value="$PROJECT_DIR$/" />
      <kind value="DIRECTORY" />
      <filePath value="$PROJECT_DIR$/main.go" />
      <package value="androidSync" />
      <directory value="$PROJECT_DIR$/" />
      <method v="2" />
    </configuration>
    <configuration name="go build main.go" type="GoApplicationRunConfiguration" factoryName="Go Application" temporary="true" nameIsGenerated="true">
      <module name="androidSync" />
      <working_directory value="$PROJECT_DIR$/" />
      <kind value="FILE" />
      <filePath value="$PROJECT_DIR$/main.go" />
      <package value="androidSync" />
      <directory value="$PROJECT_DIR$/" />
      <method v="2" />
    </configuration>
    <list>
      <item itemvalue="Go Build.go build androidSync" />
      <item itemvalue="Go Build.go build main.go" />
    </list>
    <recent_temporary>
      <list>
        <item itemvalue="Go Build.go build androidSync" />
        <item itemvalue="Go Build.go build main.go" />
      </list>
    </recent_temporary>
  </component>
  <component name="SvnConfiguration">
    <configuration />
  </component>
  <component name="TaskManager">
    <task active="true" id="Default" summary="Default task">
      <changelist id="e3303c4d-ac69-4436-b80e-4e2521d4dcc3" name="Default Changelist" comment="" />
      <created>1567504310030</created>
      <option name="number" value="Default" />
      <option name="presentableId" value="Default" />
      <updated>1567504310030</updated>
      <workItem from="1567504311422" duration="4723000" />
      <workItem from="1567562506469" duration="2871000" />
      <workItem from="1567576462151" duration="40719000" />
      <workItem from="1567747422321" duration="11637000" />
      <workItem from="1569727318755" duration="925000" />
      <workItem from="1570592385068" duration="519000" />
      <workItem from="1576559914307" duration="5390000" />
      <workItem from="1576636227327" duration="2169000" />
    </task>
    <task id="LOCAL-00001" summary="首次提交">
      <created>1567763026206</created>
      <option name="number" value="00001" />
      <option name="presentableId" value="LOCAL-00001" />
      <option name="project" value="LOCAL" />
      <updated>1567763026206</updated>
    </task>
    <option name="localTasksCounter" value="2" />
    <servers />
  </component>
  <component name="TimeTrackingManager">
    <option name="totallyTimeSpent" value="68953000" />
  </component>
  <component name="ToolWindowManager">
    <frame x="-8" y="-8" width="1936" height="1056" extended-state="6" />
    <layout>
      <window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.22965738" />
      <window_info id="Structure" order="1" side_tool="true" weight="0.25" />
      <window_info id="Image Layers" order="2" />
      <window_info id="Designer" order="3" />
      <window_info id="UI Designer" order="4" />
      <window_info id="Capture Tool" order="5" />
      <window_info id="Favorites" order="6" side_tool="true" />
      <window_info anchor="bottom" id="Message" order="0" />
      <window_info anchor="bottom" id="Find" order="1" weight="0.25277162" />
      <window_info anchor="bottom" id="Run" order="2" weight="0.29046562" />
      <window_info anchor="bottom" id="Debug" order="3" weight="0.3991131" />
      <window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
      <window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
      <window_info anchor="bottom" id="TODO" order="6" />
      <window_info anchor="bottom" id="Docker" order="7" show_stripe_button="false" />
      <window_info anchor="bottom" id="Version Control" order="8" weight="0.3293023" />
      <window_info anchor="bottom" id="Database Changes" order="9" />
      <window_info anchor="bottom" id="Terminal" order="10" weight="0.3248337" />
      <window_info anchor="bottom" id="Event Log" order="11" side_tool="true" />
      <window_info anchor="right" id="SciView" order="0" />
      <window_info anchor="right" id="Commander" internal_type="SLIDING" order="1" type="SLIDING" weight="0.4" />
      <window_info anchor="right" id="Ant Build" order="2" weight="0.25" />
      <window_info anchor="right" content_ui="combo" id="Hierarchy" order="3" weight="0.25" />
      <window_info anchor="right" id="Palette" order="4" />
      <window_info anchor="right" id="Theme Preview" order="5" />
      <window_info anchor="right" id="Maven" order="6" />
      <window_info anchor="right" id="Capture Analysis" order="7" />
      <window_info anchor="right" id="Palette&#9;" order="8" />
      <window_info anchor="right" id="Database" order="9" weight="0.32982844" />
      <window_info anchor="right" id="Api Debugger" order="10" />
    </layout>
  </component>
  <component name="TypeScriptGeneratedFilesManager">
    <option name="version" value="1" />
  </component>
  <component name="VcsManagerConfiguration">
    <option name="CHECK_CODE_SMELLS_BEFORE_PROJECT_COMMIT" value="false" />
    <option name="CHECK_NEW_TODO" value="false" />
    <MESSAGE value="首次提交" />
    <option name="LAST_COMMIT_MESSAGE" value="首次提交" />
  </component>
  <component name="XDebuggerManager">
    <breakpoint-manager>
      <breakpoints>
        <line-breakpoint enabled="true" type="DlvLineBreakpoint">
          <url>file://$PROJECT_DIR$/../basic.com/Android/syncdb.git/agent.go</url>
          <line>98</line>
          <option name="timeStamp" value="1" />
        </line-breakpoint>
        <line-breakpoint enabled="true" type="DlvLineBreakpoint">
          <url>file://$PROJECT_DIR$/main.go</url>
          <line>11</line>
          <option name="timeStamp" value="2" />
        </line-breakpoint>
        <line-breakpoint enabled="true" type="DlvLineBreakpoint">
          <url>file://$PROJECT_DIR$/main.go</url>
          <line>12</line>
          <option name="timeStamp" value="3" />
        </line-breakpoint>
        <line-breakpoint enabled="true" type="DlvLineBreakpoint">
          <url>file://$PROJECT_DIR$/main.go</url>
          <line>13</line>
          <option name="timeStamp" value="4" />
        </line-breakpoint>
        <line-breakpoint enabled="true" type="DlvLineBreakpoint">
          <url>file://$PROJECT_DIR$/main.go</url>
          <line>16</line>
          <option name="timeStamp" value="5" />
        </line-breakpoint>
        <line-breakpoint enabled="true" type="DlvLineBreakpoint">
          <url>file://$PROJECT_DIR$/main.go</url>
          <line>17</line>
          <option name="timeStamp" value="6" />
        </line-breakpoint>
        <line-breakpoint enabled="true" type="DlvLineBreakpoint">
          <url>file://$PROJECT_DIR$/main.go</url>
          <line>18</line>
          <option name="timeStamp" value="7" />
        </line-breakpoint>
        <line-breakpoint enabled="true" type="DlvLineBreakpoint">
          <url>file://$PROJECT_DIR$/main.go</url>
          <line>10</line>
          <option name="timeStamp" value="8" />
        </line-breakpoint>
      </breakpoints>
    </breakpoint-manager>
  </component>
  <component name="editorHistoryManager">
    <entry file="file://$PROJECT_DIR$/clusterService.go" />
    <entry file="file://$PROJECT_DIR$/db/cluster.go" />
    <entry file="file://$PROJECT_DIR$/db/dbTablePersons.go" />
    <entry file="file://$PROJECT_DIR$/db/db.go" />
    <entry file="file://$PROJECT_DIR$/db/dbLogger.go" />
    <entry file="file://$PROJECT_DIR$/../basic.com/Android/syncdb.git/searcher.go">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="1547">
          <caret line="97" column="5" selection-start-line="97" selection-start-column="5" selection-end-line="97" selection-end-column="5" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/../basic.com/Android/syncdb.git/dbself.go">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="391">
          <caret line="31" column="5" selection-start-line="31" selection-start-column="5" selection-end-line="31" selection-end-column="5" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/../basic.com/valib/logger.git/logger.go">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="170">
          <caret line="17" column="4" selection-start-line="17" selection-start-column="4" selection-end-line="17" selection-end-column="4" />
        </state>
      </provider>
    </entry>
    <entry file="file://$APPLICATION_CONFIG_DIR$/consoles/db/a3bd5e95-52ff-4668-b73d-db976a28f634/console.sql" />
    <entry file="file://$PROJECT_DIR$/../basic.com/Android/syncdb.git/db.go">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="17">
          <caret line="94" selection-start-line="94" selection-end-line="94" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/../github.com/jinzhu/gorm/main.go">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="331">
          <caret line="659" column="1" selection-start-line="659" selection-start-column="1" selection-end-line="659" selection-end-column="1" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/androidSync/AndroidSync.java" />
    <entry file="file://$PROJECT_DIR$/README.md">
      <provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
        <state split_layout="SPLIT">
          <first_editor relative-caret-position="102">
            <caret line="6" column="41" lean-forward="true" selection-start-line="6" selection-start-column="41" selection-end-line="6" selection-end-column="41" />
          </first_editor>
          <second_editor />
        </state>
      </provider>
    </entry>
    <entry file="file://D:/program/go/src/runtime/proc.go">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="30">
          <caret line="199" selection-start-line="199" selection-end-line="199" />
        </state>
      </provider>
    </entry>
    <entry file="file://D:/program/go/src/runtime/asm_amd64.s">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="168">
          <caret line="1336" selection-start-line="1336" selection-end-line="1336" />
        </state>
      </provider>
    </entry>
    <entry file="file://D:/program/go/src/os/file.go">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="78">
          <caret line="140" column="15" selection-start-line="140" selection-start-column="15" selection-end-line="140" selection-end-column="15" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/../basic.com/Android/syncdb.git/agent.go">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="1230">
          <caret line="98" column="37" selection-start-line="98" selection-start-column="37" selection-end-line="98" selection-end-column="37" />
          <folding>
            <element signature="e#818#1135#0" expanded="true" />
          </folding>
        </state>
      </provider>
    </entry>
    <entry file="file://D:/program/go/src/runtime/debug/stack.go">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="150">
          <caret line="20" column="5" selection-start-line="20" selection-start-column="5" selection-end-line="20" selection-end-column="5" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/cluster.go">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="60">
          <caret line="2" selection-start-line="2" selection-end-line="2" />
          <folding>
            <element signature="e#35#177#0" expanded="true" />
          </folding>
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/sync.go">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="60">
          <caret line="2" selection-start-line="2" selection-end-line="2" />
        </state>
      </provider>
    </entry>
    <entry file="file://$PROJECT_DIR$/main.go">
      <provider selected="true" editor-type-id="text-editor">
        <state relative-caret-position="330">
          <caret line="26" lean-forward="true" selection-start-line="26" selection-end-line="26" />
        </state>
      </provider>
    </entry>
  </component>
  <component name="masterDetails">
    <states>
      <state key="ProjectJDKs.UI">
        <settings>
          <last-edited>1.8</last-edited>
          <splitter-proportions>
            <option name="proportions">
              <list>
                <option value="0.2" />
              </list>
            </option>
          </splitter-proportions>
        </settings>
      </state>
    </states>
  </component>
</project>
androidSync-sources.jar
Binary files differ
androidSync.aar
Binary files differ
b.bat
New file
@@ -0,0 +1,4 @@
gomobile bind -target=android androidSync
cp androidSync.aar E:\workspace\Security_yuyin_indoor\app\libs\
cp androidSync.aar E:\workspace\Security_yuyin_outdoor_white\app\libs\
pause
cluster.go
@@ -1,5 +1,5 @@
package androidSync
//package main
import (
    sdb "basic.com/Android/syncdb.git"
    "basic.com/valib/logger.git"
@@ -13,7 +13,7 @@
    syncClusterKeyPrefix = "bjbasic123"
)
const (
    defaultSqliteDBPath = "./testdb.db"
    defaultSqliteDBPath = "/sdcard/testdb.db"
    dBNameCluster      = "cluster"
    dBNameClusterNode  = "cluster_node"
@@ -26,9 +26,9 @@
var members *memberlist.Memberlist
var sqliteDBPath string = defaultSqliteDBPath
func init(){
    var logFile = "./logger/androidSync.log"
    var logSaveDays = 15    // 日志初始化
func InitCluster() bool {
    var logFile = "/sdcard/androidSync.log"
    var logSaveDays = 15
    logger.Config(logFile, logger.DebugLevel)
    logger.SetSaveDays(logSaveDays)
    err := sdb.InitDbConn(sqliteDBPath)
@@ -36,18 +36,13 @@
        logger.Error("sdb.InitDbConn ERROR: sqliteDBPath:", sqliteDBPath)
        os.Exit(-1)
    }
    return true
}
/*
    设置数据库路径
 */
func setDBPath(path string){
    sqliteDBPath = path
}
/*
    获取数据库路径
*/
func getDBPath() string {
    return sqliteDBPath
}
@@ -57,12 +52,6 @@
    sdb.CloseSearchNode(ml)
}
/*
    创建查询集群的临时节点,需要传入集群密码,6字节,数字或字母
    每个一秒调用一次GetSearchNodes,拿到搜索到的节点信息数据
    最后调用CloseSearchNode,关闭临时创建的搜索节点
    pwd = password must six bytes
*/
func CreateSearchNodeByPwd(pwd string) bool{
    pwdFull := syncClusterKeyPrefix + pwd
@@ -78,10 +67,7 @@
    return true
}
/*
    创建查询集群的临时节点,需要传入集群密码,16字节
    key = password
*/
func createSearchNode(key string) bool {
    var err error
    members, err = sdb.CreateSearchNode(key)
@@ -93,11 +79,7 @@
    return true
}
/*
    阻塞方式创建搜索集群的节点,会直接返回搜索到的节点
    map[string]NodeInfo
    nodes[NodeInfo.NodeID] = NodeInfo
 */
func createSearchNodeWhitClose(key string, delay int) []byte {
    nodes := sdb.CreateSearchNodeWhitClose(key, time.Duration(delay))
    strNodes, err := json.Marshal(nodes)
@@ -108,9 +90,7 @@
    return strNodes
}
/*
    关闭临时创建的节点
*/
func CloseSearchNode() bool {
    err := sdb.CloseSearchNode(members)
    if err != nil {
@@ -120,22 +100,6 @@
    return true
}
/*
    获取搜索到的节点信息
json vector
[
{Node1},
{Node2},
...
{Noden}
]
type NodeInfo struct {
    ClusterID   string `json:"clusterID"`
    NodeID      string `json:"nodeID"`
    NodeAddress string `json:"nodeAddress"`
    IsAlive     int    `json:"isAlive"`  //StatusNone:0, StatusAlive:1, StatusLeaving:2, StatusLeft:3, StatusFailed:4
}
*/
func GetSearchNodes() []byte {
    nodes := sdb.GetSearchNodes()
    strNodes, err := json.Marshal(nodes)
main.go
New file
@@ -0,0 +1,38 @@
//package main
package androidSync
import (
    "fmt"
    "time"
)
func main() {
    Leave()
    InitCluster()
    InitAgent("node2")
    SyncInit("c4d03d5d-64c3-4941-bb53-152277a3271f","123456","node2","")
    //JoinByNodeAddrs("192.168.222.103:30190")
    JoinByNodeAddrs("192.168.5.22:30190")
    fmt.Println("hello")
    var count = 0
    for {
        //SyncSql("select * from table1 count="+strconv.Itoa(count))
        count++
        //nodes := string(GetNodes())
        //fmt.Println("nodes:",nodes)
        time.Sleep(5*time.Second)
        //SyncSql("select * from table1")
    }
}
//func main1() {
//    InitCluster()
//    InitAgent("node2")
//    SyncInit("cluster1","YmpiYXNpYzEyMzEyMzQ1Ng==","node2","")
//    JoinByNodeAddrs("ip:30190")
//    SyncSql("select * from table1")
//    fmt.Println("hello")
//
//}
sync.go
@@ -1,4 +1,5 @@
package androidSync
//package main
import (
    sdb "basic.com/Android/syncdb.git"
@@ -8,40 +9,43 @@
    "strings"
    "time"
)
type ReceiveSqlInterface2 interface {
    sdb.ReceiveSqlInterface
}
/*
    每次开机后都会调用该接口,该接口会去查询数据库,确实之前是否已经加入过集群,若是已经加入集群,则开机自动加入
 */
func RegisterReceiveSqlInterfaceFromJava(c ReceiveSqlInterface2) {
    sdb.RegisterReceiveSqlInterface(c)
}
func InitAgent(devID string) bool {
    var nodeIps []string
    sqlFindAllCluster := string("select * from " + dBNameCluster)
    clusters, err := sdb.ExecuteQuerySql([]string{sqlFindAllCluster})
    if err == nil && clusters != nil && len(clusters) > 0 {
    if err == nil && clusters != nil && len(clusters) > 0 && clusters[0].Values != nil {
        c := clusters[0]
        sqlFindNodesByClusterId := string("select * from " + dBNameClusterNode + " where cluster_id='" + c.Values[0][1].(string) + "'")
        nodes, err := sdb.ExecuteQuerySql([]string{sqlFindNodesByClusterId})
        if err == nil && nodes != nil && len(nodes) > 0 {
            var nodeIps []string
            for _, n := range nodes {
                if n.Values[0][3].(string) != devID {
                if n.Values != nil && n.Values[0][3].(string) != devID {
                    nodeIps = append(nodeIps, n.Values[0][4].(string))
                }
            }
            agent, err = sdb.Init(c.Values[0][0].(string), c.Values[0][2].(string), devID, nodeIps)
            if agent != nil {
                logger.Debug("sync.Agent init success!")
            } else {
                logger.Debug("sync.Agent init fail!")
            }
        }
        //agent, err = sdb.Init(c.Values[0][0].(string), c.Values[0][2].(string), devID, nodeIps)
        //if agent != nil {
        //    logger.Debug("sync.Agent init success!")
        //} else {
        //    logger.Debug("sync.Agent init fail!")
        //}
    }
    return true
}
/*
    之前没有集群。调用此接口进行集群初始化,传入集群其他节点的ip,便于初始化后直接加入集群
    strAddrs = "ip1:port1;ip2:port2;ip3:port3"
*/
func SyncInit(clusterID string, password string, nodeID string, strAddrs string) bool {
    var ips []string
    if strAddrs == "" {
@@ -61,10 +65,6 @@
    return true
}
/*
    初始化时,若没能加入集群,可以通过该接口加入集群。
    strAddrs = "ip1:port1;ip2:port2;ip3:port3"
*/
func JoinByNodeAddrs(strAddrs string) bool {
    if strAddrs == "" {
        logger.Error("strAddrs == \"\"")
@@ -80,15 +80,11 @@
    return true
}
/*
    加入集群,包含初始化节点SyncInit,并根据传入的集群其他节点列表自动加入集群
    strAddrs = "ip1:port1;ip2:port2;ip3:port3"
*/
func JoinCluster(clusterID, password, strAddrs, devID, devIP, devName string) bool {
    isOk := SyncInit(clusterID, password, devID, strAddrs)
    if isOk { //加入成功
    if isOk {
        logger.Debug("dbSync.Init success")
        if ! syncTableDataFromCluster(clusterID, devID, devIP, devName) {
@@ -109,22 +105,6 @@
    return true
}
/*
    加入集群后,可以通过该接口获取集群的节点信息,不过最好直接查同步库的集群节点表
json vector
[
{Node1},
{Node2},
...
{Noden}
]
type NodeInfo struct {
    ClusterID   string `json:"clusterID"`
    NodeID      string `json:"nodeID"`
    NodeAddress string `json:"nodeAddress"`
    IsAlive     int    `json:"isAlive"` //StatusNone:0, StatusAlive:1, StatusLeaving:2, StatusLeft:3, StatusFailed:4
}
*/
func GetNodes() []byte {
    nodes := agent.GetNodes()
    strNode, err := json.Marshal(nodes)
@@ -135,20 +115,15 @@
    return strNode
}
/*
    加入集群后, 清空本地的同步库数据,并从集群拉取最新的同步库数据
 */
func syncTableDataFromCluster(clusterID, devID, devIP, devName string) bool {
    var err error
    //0.关闭reference
    foreignSql := string("PRAGMA foreign_keys=OFF")
    _, err = sdb.ExecuteWriteSql([]string{foreignSql}, false)
    if err != nil {
        return false
    }
    //1.删除本地的同步库数据
    var sqls []string
    var delSql string
    for _, t := range syncTables {
@@ -162,7 +137,6 @@
        sqls = append(sqls, delSql)
    }
    //2.拉取集群内的同步库数据到本地数据库表中
    var dumpSqls *[]string
    dumpSqls, err = agent.GetTableDataFromCluster(syncTables)
    if dumpSqls != nil {
@@ -173,7 +147,6 @@
    logger.Debug("成功添加当前节点到集群节点中")
    //3.将本节点加入到节点列表中
    timeUnix := time.Now().Unix()
    fmtTimeStr := time.Unix(timeUnix, 0).Format("2006-01-02 15:04:05")
@@ -182,17 +155,14 @@
        (devIP + ":" + strconv.Itoa(sdb.DefaultBindPort)) + "','" + fmtTimeStr + "')"
    sqls = append(sqls, sqlSync)
    //4. 写入数据库
    _, err = sdb.ExecuteWriteSql(sqls, true)
    if err != nil {
        logger.Debug("sdb.ExecuteWriteSql ERROR:", err)
        return false
    }
    //5. 同步该节点到集群
    agent.SyncSql([]string{sqlSync})
    //6.开启reference
    foreignSql = string("PRAGMA foreign_keys=ON")
    _, err = sdb.ExecuteWriteSql([]string{foreignSql}, false)
    if err != nil {
@@ -202,10 +172,6 @@
    return true
}
/*
    操作数据库后,需要调用该接口将对应的sql语句同步到集群
    strSql = "sql1;sql2;sql3;...;sqln"
 */
func SyncSql(strSql string) {
    sqls := strings.Split(strSql, ";")
@@ -213,9 +179,6 @@
    agent.SyncSql(sqls)
}
/*
    更新集群的名字
 */
func UpdateClusterName(clusterName, clusterID string) bool {
    sql := string("update cluster set cluster_name='" + clusterName + "' where cluster_id='" + clusterID + "'")
    _, err := sdb.ExecuteWriteSql([]string{sql}, false)
@@ -226,9 +189,6 @@
    return true
}
/*
    退出集群
 */
func Leave() bool {
    if agent != nil {