From 546d23f0ec50be30824d5a58ff5281ff6e21adbb Mon Sep 17 00:00:00 2001
From: 554325746@qq.com <554325746@qq.com>
Date: 星期三, 25 十二月 2019 09:15:39 +0800
Subject: [PATCH] a
---
.idea/vcs.xml | 6
b.bat | 4
.idea/modules.xml | 8
.idea/androidSync.iml | 9
.idea/workspace.xml | 521 ++++++++++++++++++++++++++++++++++++++++
androidSync-sources.jar | 0
.idea/encodings.xml | 4
sync.go | 84 +----
main.go | 38 ++
cluster.go | 56 ---
androidSync.aar | 0
.idea/misc.xml | 6
12 files changed, 628 insertions(+), 108 deletions(-)
diff --git a/.idea/androidSync.iml b/.idea/androidSync.iml
new file mode 100644
index 0000000..d6ebd48
--- /dev/null
+++ b/.idea/androidSync.iml
@@ -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>
\ No newline at end of file
diff --git a/.idea/encodings.xml b/.idea/encodings.xml
new file mode 100644
index 0000000..15a15b2
--- /dev/null
+++ b/.idea/encodings.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="Encoding" addBOMForNewFiles="with NO BOM" />
+</project>
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..28a804d
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="JavaScriptSettings">
+ <option name="languageLevel" value="ES6" />
+ </component>
+</project>
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..1052f30
--- /dev/null
+++ b/.idea/modules.xml
@@ -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>
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/.idea/vcs.xml
@@ -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>
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..dd17689
--- /dev/null
+++ b/.idea/workspace.xml
@@ -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 <androidSync>" type="20ee2d1f:SyntheticLibraryElementNode" />
+ </path>
+ <path>
+ <item name="androidSync" type="b2602c69:ProjectViewProjectNode" />
+ <item name="External Libraries" type="cb654da1:ExternalLibrariesNode" />
+ <item name="GOPATH <androidSync>" 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 <androidSync>" 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 <androidSync>" 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 <androidSync>" 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	" 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>
\ No newline at end of file
diff --git a/androidSync-sources.jar b/androidSync-sources.jar
new file mode 100644
index 0000000..c681981
--- /dev/null
+++ b/androidSync-sources.jar
Binary files differ
diff --git a/androidSync.aar b/androidSync.aar
new file mode 100644
index 0000000..2494186
--- /dev/null
+++ b/androidSync.aar
Binary files differ
diff --git a/b.bat b/b.bat
new file mode 100644
index 0000000..16a956c
--- /dev/null
+++ b/b.bat
@@ -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
\ No newline at end of file
diff --git a/cluster.go b/cluster.go
index 7a48bb0..ee96790 100644
--- a/cluster.go
+++ b/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瀛楄妭锛屾暟瀛楁垨瀛楁瘝
- 姣忎釜涓�绉掕皟鐢ㄤ竴娆etSearchNodes锛屾嬁鍒版悳绱㈠埌鐨勮妭鐐逛俊鎭暟鎹�
- 鏈�鍚庤皟鐢–loseSearchNode锛屽叧闂复鏃跺垱寤虹殑鎼滅储鑺傜偣
- 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)
@@ -144,4 +108,4 @@
return nil
}
return strNodes
-}
+}
\ No newline at end of file
diff --git a/main.go b/main.go
new file mode 100644
index 0000000..ffab338
--- /dev/null
+++ b/main.go
@@ -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")
+//
+//}
\ No newline at end of file
diff --git a/sync.go b/sync.go
index 328683b..438a3cb 100755
--- a/sync.go
+++ b/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
+}
-/*
- 姣忔寮�鏈哄悗閮戒細璋冪敤璇ユ帴鍙o紝璇ユ帴鍙d細鍘绘煡璇㈡暟鎹簱锛岀‘瀹炰箣鍓嶆槸鍚﹀凡缁忓姞鍏ヨ繃闆嗙兢锛岃嫢鏄凡缁忓姞鍏ラ泦缇わ紝鍒欏紑鏈鸿嚜鍔ㄥ姞鍏�
- */
+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
}
-/*
- 涔嬪墠娌℃湁闆嗙兢銆傝皟鐢ㄦ鎺ュ彛杩涜闆嗙兢鍒濆鍖栵紝浼犲叆闆嗙兢鍏朵粬鑺傜偣鐨刬p锛屼究浜庡垵濮嬪寲鍚庣洿鎺ュ姞鍏ラ泦缇�
- 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
}
-/*
- 鍒濆鍖栨椂锛岃嫢娌¤兘鍔犲叆闆嗙兢锛屽彲浠ラ�氳繃璇ユ帴鍙e姞鍏ラ泦缇ゃ��
- 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
}
-/*
- 鍔犲叆闆嗙兢鍚庯紝鍙互閫氳繃璇ユ帴鍙h幏鍙栭泦缇ょ殑鑺傜偣淇℃伅锛屼笉杩囨渶濂界洿鎺ユ煡鍚屾搴撶殑闆嗙兢鑺傜偣琛�
-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.寮�鍚痳eference
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 {
@@ -249,4 +209,4 @@
}
return true
-}
+}
\ No newline at end of file
--
Gitblit v1.8.0