diff --git a/Data/Data.4DD b/Data/Data.4DD index eb6d6f0..e0839d0 100644 Binary files a/Data/Data.4DD and b/Data/Data.4DD differ diff --git a/Plugins/4D InternetCommands.bundle/Contents/Info.plist b/Plugins/4D InternetCommands.bundle/Contents/Info.plist deleted file mode 100644 index 1fcbe33..0000000 --- a/Plugins/4D InternetCommands.bundle/Contents/Info.plist +++ /dev/null @@ -1,54 +0,0 @@ - - - - - BuildMachineOSBuild - 24C101 - CFBundleDevelopmentRegion - English - CFBundleExecutable - 4D InternetCommands - CFBundleIdentifier - com.4D.4DIC - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - 4D Internet Commands - CFBundlePackageType - BNDL - CFBundleShortVersionString - 20 R8 build 20R8.100073 - CFBundleSignature - 4D06 - CFBundleSupportedPlatforms - - MacOSX - - CFBundleVersion - 20.8.0 - CSResourcesFileMapped - - DTCompiler - com.apple.compilers.llvm.clang.1_0 - DTPlatformBuild - 24A336 - DTPlatformName - macosx - DTPlatformVersion - 15.0 - DTSDKBuild - 24A336 - DTSDKName - macosx15.0 - DTXcode - 1600 - DTXcodeBuild - 16A242d - LSMinimumSystemVersion - 10.10 - NSHumanReadableCopyright - "© 4D SAS, 1999-2025. All rights reserved." - com.4d.version - 20 R8 build 20R8.100073 - - diff --git a/Plugins/4D InternetCommands.bundle/Contents/MacOS/4D InternetCommands b/Plugins/4D InternetCommands.bundle/Contents/MacOS/4D InternetCommands deleted file mode 100644 index d1a8d01..0000000 Binary files a/Plugins/4D InternetCommands.bundle/Contents/MacOS/4D InternetCommands and /dev/null differ diff --git a/Plugins/4D InternetCommands.bundle/Contents/PkgInfo b/Plugins/4D InternetCommands.bundle/Contents/PkgInfo deleted file mode 100644 index a23888c..0000000 --- a/Plugins/4D InternetCommands.bundle/Contents/PkgInfo +++ /dev/null @@ -1 +0,0 @@ -BNDL4D06 \ No newline at end of file diff --git a/Plugins/4D InternetCommands.bundle/Contents/Resources/constants.xlf b/Plugins/4D InternetCommands.bundle/Contents/Resources/constants.xlf deleted file mode 100644 index 6d47a3b..0000000 --- a/Plugins/4D InternetCommands.bundle/Contents/Resources/constants.xlf +++ /dev/null @@ -1,18 +0,0 @@ - - - -
- This file is not localized. -
- - - - IC Commands - - - Use SSL - - - -
-
diff --git a/Plugins/4D InternetCommands.bundle/Contents/Resources/en.lproj/InfoPlist.strings b/Plugins/4D InternetCommands.bundle/Contents/Resources/en.lproj/InfoPlist.strings deleted file mode 100644 index 4b34a87..0000000 --- a/Plugins/4D InternetCommands.bundle/Contents/Resources/en.lproj/InfoPlist.strings +++ /dev/null @@ -1,2 +0,0 @@ -CFBundleGetInfoString = "© 4D SAS, 1999-2025. All rights reserved."; -NSHumanReadableCopyright = "© 4D SAS, 1999-2025. All rights reserved."; diff --git a/Plugins/4D InternetCommands.bundle/Contents/Resources/manifest.json b/Plugins/4D InternetCommands.bundle/Contents/Resources/manifest.json deleted file mode 100644 index 057164e..0000000 --- a/Plugins/4D InternetCommands.bundle/Contents/Resources/manifest.json +++ /dev/null @@ -1,140 +0,0 @@ -{"name":"4D Internet Commands","id":15010,"commands":[{"theme":"IC Internet","syntax":"NET_NameToAddr(&S;&L):I"} -,{"theme":"IC Internet","syntax":"NET_AddrToName(&L;&S;&S):I"} -,{"theme":"IC TCP/IP","syntax":"TCP_Open(&S;&I;&L;&I):I"} -,{"theme":"IC TCP/IP","syntax":"TCP_Close(&L):I"} -,{"theme":"IC TCP/IP","syntax":"TCP_Send(&L;&T):I"} -,{"theme":"IC TCP/IP","syntax":"TCP_Receive(&L;&T):I"} -,{"theme":"IC TCP/IP","syntax":"TCP_Listen(&S;&I;&I;&I;&L):I"} -,{"theme":"IC TCP/IP","syntax":"TCP_State(&L;&I):I"} -,{"theme":"IC Internet","syntax":"NET_Resolve(&S;&S):I"} -,{"theme":"IC Utilities","syntax":"IT_MyTCPAddr(&S;&S):I"} -,{"theme":"IC Utilities","syntax":"IT_MacTCPVer(&I):I"} -,{"theme":"IC Send Mail","syntax":"SMTP_QuickSend(&U;&U;&U;&U;&U;&L;&L;&U;&U):I"} -,{"theme":"IC Send Mail","syntax":"SMTP_New(&L):I"} -,{"theme":"IC Send Mail","syntax":"SMTP_Clear(&L):I"} -,{"theme":"IC Send Mail","syntax":"SMTP_Send(&L;&I):I"} -,{"theme":"IC Send Mail","syntax":"SMTP_Date(&L;&D;&H;&I;&I;&I):I"} -,{"theme":"IC Send Mail","syntax":"SMTP_Host(&L;&S;&I):I"} -,{"theme":"IC Send Mail","syntax":"SMTP_To(&L;&U;&I):I"} -,{"theme":"IC Send Mail","syntax":"SMTP_Cc(&L;&U;&I):I"} -,{"theme":"IC Send Mail","syntax":"SMTP_Bcc(&L;&U;&I):I"} -,{"theme":"IC Send Mail","syntax":"SMTP_From(&L;&U;&I):I"} -,{"theme":"IC Send Mail","syntax":"SMTP_ReplyTo(&L;&U;&I):I"} -,{"theme":"IC Send Mail","syntax":"SMTP_InReplyTo(&L;&U;&I):I"} -,{"theme":"IC Send Mail","syntax":"SMTP_Sender(&L;&U;&I):I"} -,{"theme":"IC Send Mail","syntax":"SMTP_Subject(&L;&U;&I):I"} -,{"theme":"IC Send Mail","syntax":"SMTP_Comments(&L;&U;&I):I"} -,{"theme":"IC Send Mail","syntax":"SMTP_Body(&L;&U;&I):I"} -,{"theme":"IC Send Mail","syntax":"SMTP_References(&L;&U;&I):I"} -,{"theme":"IC Send Mail","syntax":"SMTP_Encrypted(&L;&U;&I):I"} -,{"theme":"IC Send Mail","syntax":"SMTP_AddHeader(&L;&S;&U;&I):I"} -,{"theme":"IC Send Mail","syntax":"SMTP_Attachment(&L;&U;&I;&I;&U;&U):I"} -,{"theme":"IC Send Mail","syntax":"SMTP_GetPrefs(&I;&I;&L):I"} -,{"theme":"IC Send Mail","syntax":"SMTP_SetPrefs(&I;&I;&L):I"} -,{"theme":"IC POP3 Review Mail","syntax":"POP3_Login(&S;&S;&S;&I;&L;&I):I"} -,{"theme":"IC POP3 Review Mail","syntax":"POP3_Logout(&L):I"} -,{"theme":"IC POP3 Review Mail","syntax":"POP3_BoxInfo(&L;&L;&L):I"} -,{"theme":"IC POP3 Review Mail","syntax":"POP3_Delete(&L;&L;&L):I"} -,{"theme":"IC POP3 Review Mail","syntax":"POP3_Reset(&L):I"} -,{"theme":"IC POP3 Review Mail","syntax":"POP3_MsgInfo(&L;&L;&L;&S):I"} -,{"theme":"IC POP3 Review Mail","syntax":"POP3_MsgLstInfo(&L;&L;&L;&Y;&Y;&Y):I"} -,{"theme":"IC POP3 Review Mail","syntax":"POP3_GetMessage(&L;&L;&L;&L;&T):I"} -,{"theme":"IC POP3 Review Mail","syntax":"POP3_MsgLst(&L;&L;&L;&Y;&Y;&Y;&Y):I"} -,{"theme":"IC POP3 Review Mail","syntax":"POP3_VerifyID(&L):I"} -,{"theme":"IC POP3 Review Mail","syntax":"POP3_UIDToNum(&L;&S;&L):I"} -,{"theme":"IC POP3 Review Mail","syntax":"POP3_Download(&L;&L;&I;&U):I"} -,{"theme":"IC Downloaded Mail","syntax":"MSG_HasAttach(&U;&I):I"} -,{"theme":"IC Downloaded Mail","syntax":"MSG_FindHeader(&U;&S;&T):I"} -,{"theme":"IC Downloaded Mail","syntax":"MSG_MessageSize(&U;&L;&L;&L):I"} -,{"theme":"IC Downloaded Mail","syntax":"MSG_GetHeaders(&U;&L;&L;&T):I"} -,{"theme":"IC Downloaded Mail","syntax":"MSG_GetBody(&U;&L;&L;&U):I"} -,{"theme":"IC Downloaded Mail","syntax":"MSG_GetMessage(&U;&L;&L;&U):I"} -,{"theme":"IC Downloaded Mail","syntax":"MSG_Extract(&U;&I;&U;&Y):I"} -,{"theme":"IC Downloaded Mail","syntax":"MSG_Delete(&U;&I):I"} -,{"theme":"IC POP3 Review Mail","syntax":"POP3_GetPrefs(&I;&U;&U):I"} -,{"theme":"IC POP3 Review Mail","syntax":"POP3_SetPrefs(&I;&U;&U):I"} -,{"theme":"IC File Transfer","syntax":"FTP_Login(&S;&S;&S;&L;&U):I"} -,{"theme":"IC File Transfer","syntax":"FTP_Logout(&L):I"} -,{"theme":"IC File Transfer","syntax":"FTP_Receive(&L;&U;&U;&I):I"} -,{"theme":"IC File Transfer","syntax":"FTP_Send(&L;&U;&U;&I):I"} -,{"theme":"IC File Transfer","syntax":"FTP_Progress(&I;&I;&S;&S;&S):I"} -,{"theme":"IC Internet","syntax":"NET_Finger(&S;&S;&T):I"} -,{"theme":"IC Internet","syntax":"NET_Ping(&S;&T;&I;&I):I"} -,{"theme":"IC Internet","syntax":"NET_Time(&S;&D;&L;&I):I"} -,{"theme":"IC Utilities","syntax":"IT_ErrorText(&I):S"} -,{"theme":"IC Utilities","syntax":"IT_Encode(&U;&U;&I):I"} -,{"theme":"IC Utilities","syntax":"IT_Decode(&U;&U;&I):I"} -,{"theme":"IC Send Mail","syntax":"SMTP_Keywords(&L;&T;&I):I"} -,{"theme":"IC Utilities","syntax":"IT_GetTimeOut(&I):I"} -,{"theme":"IC Utilities","syntax":"IT_SetTimeOut(&I):I"} -,{"theme":"IC File Transfer","syntax":"FTP_GetFileInfo(&L;&U;&L;&D;&H):I"} -,{"theme":"IC File Transfer","syntax":"FTP_GetDirList(&L;&U;&Y;&Y;&Y;&Y;&Y):I"} -,{"theme":"IC File Transfer","syntax":"FTP_VerifyID(&L):I"} -,{"theme":"IC Utilities","syntax":"IT_Version:S"} -,{"theme":"IC Utilities","syntax":"IT_Platform:I"} -,{"theme":"IC Utilities","syntax":"IT_MacTCPInit:I"} -,{"theme":"IC Utilities","syntax":"IT_TCPversion(&I;&S):I"} -,{"theme":"IC File Transfer","syntax":"FTP_MacBinary(&L;&I):I"} -,{"theme":"IC File Transfer","syntax":"FTP_Delete(&L;&U):I"} -,{"theme":"IC File Transfer","syntax":"FTP_MakeDir(&L;&U):I"} -,{"theme":"IC File Transfer","syntax":"FTP_RemoveDir(&L;&U):I"} -,{"theme":"IC Utilities","syntax":"IT_GetProxy(&I;&I;&S;&I;&T):I"} -,{"theme":"IC Utilities","syntax":"IT_SetProxy(&I;&I;&S;&I;&T):I"} -,{"theme":"IC File Transfer","syntax":"FTP_Rename(&L;&U;&U):I"} -,{"theme":"IC File Transfer","syntax":"FTP_Append(&L;&U;&U;&I):I"} -,{"theme":"IC File Transfer","syntax":"FTP_GetType(&L;&S):I"} -,{"theme":"IC File Transfer","syntax":"FTP_SetType(&L;&S):I"} -,{"theme":"IC File Transfer","syntax":"FTP_System(&L;&S):I"} -,{"theme":"IC Utilities","syntax":"IT_GetPort(&I;&I):I"} -,{"theme":"IC Utilities","syntax":"IT_SetPort(&I;&I):I"} -,{"theme":"IC POP3 Review Mail","syntax":"POP3_Charset(&I;&I):I"} -,{"theme":"IC Send Mail","syntax":"SMTP_Charset(&I;&I):I"} -,{"theme":"IC TCP/IP","syntax":"TCP_ReceiveBLOB(&L;&O):I"} -,{"theme":"IC TCP/IP","syntax":"TCP_SendBLOB(&L;&O):I"} -,{"theme":"IC File Transfer","syntax":"FTP_ChangeDir(&L;&U):I"} -,{"theme":"IC File Transfer","syntax":"FTP_PrintDir(&L;&U):I"} -,{"theme":"IC File Transfer","syntax":"FTP_SetPassive(&L;&I):I"} -,{"theme":"IC File Transfer","syntax":"FTP_GetPassive(&L;&I):I"} -,{"theme":"IC IMAP Review Mail","syntax":"IMAP_GetPrefs(&I;&U):I"} -,{"theme":"IC IMAP Review Mail","syntax":"IMAP_SetPrefs(&I;&U):I"} -,{"theme":"IC IMAP Review Mail","syntax":"IMAP_Login(&S;&S;&S;&L;&I):I"} -,{"theme":"IC IMAP Review Mail","syntax":"IMAP_Logout(&L):I"} -,{"theme":"IC IMAP Review Mail","syntax":"IMAP_Capability(&L;&T):I"} -,{"theme":"IC IMAP Review Mail","syntax":"IMAP_SetCurrentMB(&L;&T;&L;&L;&T;&T;&L):I"} -,{"theme":"IC IMAP Review Mail","syntax":"IMAP_MsgLstInfo(&L;&L;&L;&Y;&Y;&Y):I"} -,{"theme":"IC IMAP Review Mail","syntax":"IMAP_MsgLst(&L;&L;&L;&Y;&Y;&Y;&Y):I"} -,{"theme":"IC IMAP Review Mail","syntax":"IMAP_GetMessage(&L;&L;&L;&L;&I;&U;&I):I"} -,{"theme":"IC IMAP Review Mail","syntax":"IMAP_Download(&L;&L;&I;&U;&I):I"} -,{"theme":"IC IMAP Review Mail","syntax":"IMAP_GetFlags(&L;&L;&L;&Y;&Y):I"} -,{"theme":"IC IMAP Review Mail","syntax":"IMAP_SetFlags(&L;&L;&L;&T;&I):I"} -,{"theme":"IC IMAP Review Mail","syntax":"IMAP_Delete(&L;&L;&L):I"} -,{"theme":"IC IMAP Review Mail","syntax":"IMAP_Search(&L;&T;&Y):I"} -,{"theme":"IC IMAP Review Mail","syntax":"IMAP_CopyToMB(&L;&L;&L;&T;&I):I"} -,{"theme":"IC IMAP Review Mail","syntax":"IMAP_CreateMB(&L;&T):I"} -,{"theme":"IC IMAP Review Mail","syntax":"IMAP_DeleteMB(&L;&T):I"} -,{"theme":"IC IMAP Review Mail","syntax":"IMAP_RenameMB(&L;&T;&T):I"} -,{"theme":"IC IMAP Review Mail","syntax":"IMAP_SubscribeMB(&L;&T;&I):I"} -,{"theme":"IC IMAP Review Mail","syntax":"IMAP_ListMBs(&L;&T;&T;&Y;&Y;&Y;&I):I"} -,{"theme":"IC IMAP Review Mail","syntax":"IMAP_VerifyID(&L):I"} -,{"theme":"IC IMAP Review Mail","syntax":"IMAP_GetMBStatus(&L;&T;&L;&L;&L;&L):I"} -,{"theme":"IC IMAP Review Mail","syntax":"IMAP_GetCurrentMB(&L;&T):I"} -,{"theme":"IC IMAP Review Mail","syntax":"IMAP_CloseCurrentMB(&L):I"} -,{"theme":"IC IMAP Review Mail","syntax":"IMAP_MsgNumToUID(&L;&L;&L):I"} -,{"theme":"IC IMAP Review Mail","syntax":"IMAP_UIDToMsgNum(&L;&L;&L):I"} -,{"theme":"IC IMAP Review Mail","syntax":"IMAP_MsgInfo(&L;&L;&L;&L):I"} -,{"theme":"IC IMAP Review Mail","syntax":"IMAP_MsgFetch(&L;&L;&T;&T):I"} -,{"theme":"IC Downloaded Mail","syntax":"MSG_Charset(&I;&I):I"} -,{"theme":"IC Downloaded Mail","syntax":"MSG_GetPrefs(&I;&U;&U):I"} -,{"theme":"IC Downloaded Mail","syntax":"MSG_SetPrefs(&I;&U;&U):I"} -,{"theme":"IC Utilities","syntax":"IT_PPPConnect(&S):I"} -,{"theme":"IC Utilities","syntax":"IT_PPPDisconnect(&S):I"} -,{"theme":"IC Utilities","syntax":"IT_PPPStatus(&S):I"} -,{"theme":"IC Send Mail","syntax":"SMTP_Auth(&L;&S;&S;&I):I"} -,{"theme":"IC UDP","syntax":"UDP_New(&I;&L):I"} -,{"theme":"IC UDP","syntax":"UDP_Delete(&L):I"} -,{"theme":"IC UDP","syntax":"UDP_SendTo(&L;&S;&I;&T):I"} -,{"theme":"IC UDP","syntax":"UDP_SendBLOBTo(&L;&S;&I;&O):I"} -,{"theme":"IC UDP","syntax":"UDP_ReceiveFrom(&L;&S;&I;&T):I"} -,{"theme":"IC UDP","syntax":"UDP_ReceiveBLOBFrom(&L;&S;&I;&O):I"} -,{"theme":"IC Send Mail","syntax":"SMTP_MessageID(&L;&T;&I):I"} -]} diff --git a/Plugins/4D InternetCommands.bundle/Contents/Windows64/4D InternetCommands.4DX b/Plugins/4D InternetCommands.bundle/Contents/Windows64/4D InternetCommands.4DX deleted file mode 100644 index beb8947..0000000 Binary files a/Plugins/4D InternetCommands.bundle/Contents/Windows64/4D InternetCommands.4DX and /dev/null differ diff --git a/Plugins/4D InternetCommands.bundle/Contents/Windows64/4D_InternetCommands_Dbg.exp b/Plugins/4D InternetCommands.bundle/Contents/Windows64/4D_InternetCommands_Dbg.exp deleted file mode 100644 index 0721a96..0000000 Binary files a/Plugins/4D InternetCommands.bundle/Contents/Windows64/4D_InternetCommands_Dbg.exp and /dev/null differ diff --git a/Plugins/4D InternetCommands.bundle/Contents/Windows64/4D_InternetCommands_Dbg.lib b/Plugins/4D InternetCommands.bundle/Contents/Windows64/4D_InternetCommands_Dbg.lib deleted file mode 100644 index 6caf598..0000000 Binary files a/Plugins/4D InternetCommands.bundle/Contents/Windows64/4D_InternetCommands_Dbg.lib and /dev/null differ diff --git a/Plugins/4D InternetCommands.bundle/Contents/Windows64/concrt140.dll b/Plugins/4D InternetCommands.bundle/Contents/Windows64/concrt140.dll deleted file mode 100644 index 235eced..0000000 Binary files a/Plugins/4D InternetCommands.bundle/Contents/Windows64/concrt140.dll and /dev/null differ diff --git a/Plugins/4D InternetCommands.bundle/Contents/Windows64/msvcp140.dll b/Plugins/4D InternetCommands.bundle/Contents/Windows64/msvcp140.dll deleted file mode 100644 index 0a50239..0000000 Binary files a/Plugins/4D InternetCommands.bundle/Contents/Windows64/msvcp140.dll and /dev/null differ diff --git a/Plugins/4D InternetCommands.bundle/Contents/Windows64/msvcp140_1.dll b/Plugins/4D InternetCommands.bundle/Contents/Windows64/msvcp140_1.dll deleted file mode 100644 index 02ae0f8..0000000 Binary files a/Plugins/4D InternetCommands.bundle/Contents/Windows64/msvcp140_1.dll and /dev/null differ diff --git a/Plugins/4D InternetCommands.bundle/Contents/Windows64/msvcp140_2.dll b/Plugins/4D InternetCommands.bundle/Contents/Windows64/msvcp140_2.dll deleted file mode 100644 index 3283732..0000000 Binary files a/Plugins/4D InternetCommands.bundle/Contents/Windows64/msvcp140_2.dll and /dev/null differ diff --git a/Plugins/4D InternetCommands.bundle/Contents/Windows64/msvcp140_atomic_wait.dll b/Plugins/4D InternetCommands.bundle/Contents/Windows64/msvcp140_atomic_wait.dll deleted file mode 100644 index 2ca26ca..0000000 Binary files a/Plugins/4D InternetCommands.bundle/Contents/Windows64/msvcp140_atomic_wait.dll and /dev/null differ diff --git a/Plugins/4D InternetCommands.bundle/Contents/Windows64/msvcp140_codecvt_ids.dll b/Plugins/4D InternetCommands.bundle/Contents/Windows64/msvcp140_codecvt_ids.dll deleted file mode 100644 index 8eb1254..0000000 Binary files a/Plugins/4D InternetCommands.bundle/Contents/Windows64/msvcp140_codecvt_ids.dll and /dev/null differ diff --git a/Plugins/4D InternetCommands.bundle/Contents/Windows64/vccorlib140.dll b/Plugins/4D InternetCommands.bundle/Contents/Windows64/vccorlib140.dll deleted file mode 100644 index b0eff49..0000000 Binary files a/Plugins/4D InternetCommands.bundle/Contents/Windows64/vccorlib140.dll and /dev/null differ diff --git a/Plugins/4D InternetCommands.bundle/Contents/Windows64/vcruntime140.dll b/Plugins/4D InternetCommands.bundle/Contents/Windows64/vcruntime140.dll deleted file mode 100644 index 524092d..0000000 Binary files a/Plugins/4D InternetCommands.bundle/Contents/Windows64/vcruntime140.dll and /dev/null differ diff --git a/Plugins/4D InternetCommands.bundle/Contents/Windows64/vcruntime140_1.dll b/Plugins/4D InternetCommands.bundle/Contents/Windows64/vcruntime140_1.dll deleted file mode 100644 index 4e3760e..0000000 Binary files a/Plugins/4D InternetCommands.bundle/Contents/Windows64/vcruntime140_1.dll and /dev/null differ diff --git a/Plugins/4D InternetCommands.bundle/Contents/Windows64/vcruntime140_threads.dll b/Plugins/4D InternetCommands.bundle/Contents/Windows64/vcruntime140_threads.dll deleted file mode 100644 index c01bb8a..0000000 Binary files a/Plugins/4D InternetCommands.bundle/Contents/Windows64/vcruntime140_threads.dll and /dev/null differ diff --git a/Plugins/4D InternetCommands.bundle/Contents/_CodeSignature/CodeResources b/Plugins/4D InternetCommands.bundle/Contents/_CodeSignature/CodeResources deleted file mode 100644 index b9fd5d1..0000000 --- a/Plugins/4D InternetCommands.bundle/Contents/_CodeSignature/CodeResources +++ /dev/null @@ -1,312 +0,0 @@ - - - - - files - - Resources/constants.xlf - - q8+fNrUQ0eruDV6nD7aeeIyZNM4= - - Resources/en.lproj/InfoPlist.strings - - hash - - hxdIPaPYuGcktAbiua5HGz8YO54= - - optional - - - Resources/manifest.json - - ava6bpq4zV0mPvjJZZEy7Y6zPhU= - - - files2 - - Resources/constants.xlf - - hash - - q8+fNrUQ0eruDV6nD7aeeIyZNM4= - - hash2 - - FQaXuythWjgcd97iEd3fpq/cmcjQS8+yIpkryJ18fhE= - - - Resources/en.lproj/InfoPlist.strings - - hash - - hxdIPaPYuGcktAbiua5HGz8YO54= - - hash2 - - CxzzrrN6OVTHkvKvVkTuqiYcfoubC6kswqASfcC8y4Y= - - optional - - - Resources/manifest.json - - hash - - ava6bpq4zV0mPvjJZZEy7Y6zPhU= - - hash2 - - UOD4EivxweC4lNaKtzHXv7yxS2BbbNa5tPXspaKHf4I= - - - Windows64/4D InternetCommands.4DX - - hash - - v7mfItrwTddVbdn2b0mEhJXWJk8= - - hash2 - - JQU3wjInlfAX2owqcbHqVBQrxj4W1Ak76aHTOyUjiTo= - - - Windows64/4D_InternetCommands_Dbg.exp - - hash - - 3l/ufyOQ/+1C6h6ecJcMTK0W7QQ= - - hash2 - - Ro64NikScyAMO8+Y+XkDvfVqhD8eBlugXhnRv2jryCI= - - - Windows64/4D_InternetCommands_Dbg.lib - - hash - - ty8+Q9froZRerx2FSjA4yWC6w2I= - - hash2 - - ZTfO01u19xFePeuInZrKN2Cms6R2V+h3SsGTQAJf6KI= - - - Windows64/concrt140.dll - - hash - - 6GpKcUtyizrnMicFUbupQaNwCGg= - - hash2 - - T1AJkqU8QaC6RKEcM8SB2HY1BadFO+EthRB4VquPszI= - - - Windows64/msvcp140.dll - - hash - - jmoCV1keuROufQ6XXFYwaz9oCz8= - - hash2 - - pMIim9wqKmMKzcCVtNhgCOXD47x3cxdDVPPaT1vrnN4= - - - Windows64/msvcp140_1.dll - - hash - - WyUtEBONZmaJLKnaHh2VryTeEJc= - - hash2 - - kc0FwWxhw5eIxHQ0YCpZwX9bCNuz7uBM6F+NW3Do5gQ= - - - Windows64/msvcp140_2.dll - - hash - - taby0At5A8+PTS/yaYDirmEq3h4= - - hash2 - - cT8XslPYAtKD0wbOdWR+N9g6VGrrGogeXZ5SnoVsAH4= - - - Windows64/msvcp140_atomic_wait.dll - - hash - - pC8ET6DSENfpYHji1v/gdTr9OHo= - - hash2 - - rt5OxFSoLxRutKch5hbiCGhwEH2IqrxrC9HuoKUF2TU= - - - Windows64/msvcp140_codecvt_ids.dll - - hash - - Y63uIOVABBhydf9gIOge7To7F/c= - - hash2 - - 1S00n7vmq8YZZcB+BMyC2O4M6h3n+vkKg4lk4/QKzt0= - - - Windows64/vccorlib140.dll - - hash - - zDcZ/2vtEQcJH0fWmF60MEwtcws= - - hash2 - - CG+riszONX2kmeYCTkKQqonfwhmGfJDZDGL4JHWRuVs= - - - Windows64/vcruntime140.dll - - hash - - SBLaXrhqk/sK3Fu2CkmA7osK0zo= - - hash2 - - AsaqDm5iRBGp8ZsDYKeGWrFZCOJgJFEOXDipwINiw1o= - - - Windows64/vcruntime140_1.dll - - hash - - 36ekYBJIODf0fYyHCXOi3qeG2f8= - - hash2 - - fdmqAuJxxoym1fGNZR0joV1yWXFa9DMmV4993ifzdjc= - - - Windows64/vcruntime140_threads.dll - - hash - - h8YQSaUy3TY2iFUvsJAaFky6VQw= - - hash2 - - dfNUDr4IdsGxc4IdJmmYfAiMP225hTBdFgRg9HZTaok= - - - - rules - - ^Resources/ - - ^Resources/.*\.lproj/ - - optional - - weight - 1000 - - ^Resources/.*\.lproj/locversion.plist$ - - omit - - weight - 1100 - - ^Resources/Base\.lproj/ - - weight - 1010 - - ^version.plist$ - - - rules2 - - .*\.dSYM($|/) - - weight - 11 - - ^(.*/)?\.DS_Store$ - - omit - - weight - 2000 - - ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/ - - nested - - weight - 10 - - ^.* - - ^Info\.plist$ - - omit - - weight - 20 - - ^PkgInfo$ - - omit - - weight - 20 - - ^Resources/ - - weight - 20 - - ^Resources/.*\.lproj/ - - optional - - weight - 1000 - - ^Resources/.*\.lproj/locversion.plist$ - - omit - - weight - 1100 - - ^Resources/Base\.lproj/ - - weight - 1010 - - ^[^/]+$ - - nested - - weight - 10 - - ^embedded\.provisionprofile$ - - weight - 20 - - ^version\.plist$ - - weight - 20 - - - - diff --git a/Project/Sources/Classes/Alarm_Server.4dm b/Project/Sources/Classes/Alarm_Server.4dm new file mode 100644 index 0000000..ab869bb --- /dev/null +++ b/Project/Sources/Classes/Alarm_Server.4dm @@ -0,0 +1,31 @@ +property activated : Boolean + +Class extends TCPConnectionOption + +Class constructor($port : Integer) + + Super:C1705($port) + + This:C1470.activated:=False:C215 + +Function onData($connection : 4D:C1709.TCPConnection; $event : 4D:C1709.TCPEvent) + + var $data : 4D:C1709.Blob + $data:=$event.data + + var $text : Text + $text:=Convert to text:C1012($data; "utf-8") + + If ($text="Information") + If (This:C1470.activated) + $text:="Alarm\r\n is on! Nothing to report." + Else + $text:="Alarm is off! You should turn it on." + End if + CONVERT FROM TEXT:C1011($text; "utf-8"; $data) + $connection.send($data) + Else + If ($text="Activate") + This:C1470.activated:=Not:C34(This:C1470.activated) + End if + End if \ No newline at end of file diff --git a/Project/Sources/Classes/HouseDevice.4dm b/Project/Sources/Classes/HouseDevice.4dm index 08fe2f8..fcd3f72 100644 --- a/Project/Sources/Classes/HouseDevice.4dm +++ b/Project/Sources/Classes/HouseDevice.4dm @@ -1,3 +1,7 @@ +property connection : 4D:C1709.TCPConnection +property form : Object +property port : Integer + Class constructor($form : Object; $port : Integer) This:C1470.form:=$form @@ -7,13 +11,15 @@ Class constructor($form : Object; $port : Integer) //Connects to one of the servers launched inside workers Function connect() - This:C1470.connection:=4D:C1709.TCPConnection.new("localhost"; This:C1470.port; This:C1470) + This:C1470.connection:=This:C1470.connection=Null:C1517 ? 4D:C1709.TCPConnection.new("localhost"; This:C1470.port; This:C1470) : This:C1470.connection //Disconnect from the server Function disconnect() - This:C1470.connection.shutdown() - This:C1470.connection:=Null:C1517 + If (This:C1470.connection#Null:C1517) + This:C1470.connection.shutdown() + This:C1470.connection:=Null:C1517 + End if //Send a blob to the server, the server always answer with a text to show to the user Function getInfo() @@ -67,6 +73,8 @@ Function onError($connection : 4D:C1709.TCPConnection; $event : 4D:C1709.TCPEven OBJECT SET ENABLED:C1123(*; "ButtonActivate"; False:C215) OBJECT SET ENABLED:C1123(*; "ButtonDisconnect"; False:C215) + This:C1470.connection:=Null:C1517 + //Callback called after onShutdown/onError just before the TCPConnection object is released Function onTerminate($connection : 4D:C1709.TCPConnection; $event : 4D:C1709.TCPEvent) \ No newline at end of file diff --git a/Project/Sources/Classes/Lightbulb_Server.4dm b/Project/Sources/Classes/Lightbulb_Server.4dm new file mode 100644 index 0000000..3e8cff2 --- /dev/null +++ b/Project/Sources/Classes/Lightbulb_Server.4dm @@ -0,0 +1,31 @@ +property activated : Boolean + +Class extends TCPConnectionOption + +Class constructor($port : Integer) + + Super:C1705($port) + + This:C1470.activated:=False:C215 + +Function onData($connection : 4D:C1709.TCPConnection; $event : 4D:C1709.TCPEvent) + + var $data : 4D:C1709.Blob + $data:=$event.data + + var $text : Text + $text:=Convert to text:C1012($data; "utf-8") + + If ($text="Information") + If (This:C1470.activated) + $text:="Light is on!" + Else + $text:="Light is off!" + End if + CONVERT FROM TEXT:C1011($text; "utf-8"; $data) + $connection.send($data) + Else + If ($text="Activate") + This:C1470.activated:=Not:C34(This:C1470.activated) + End if + End if \ No newline at end of file diff --git a/Project/Sources/Classes/Music_Server.4dm b/Project/Sources/Classes/Music_Server.4dm new file mode 100644 index 0000000..1bd36d2 --- /dev/null +++ b/Project/Sources/Classes/Music_Server.4dm @@ -0,0 +1,31 @@ +property activated : Boolean + +Class extends TCPConnectionOption + +Class constructor($port : Integer) + + Super:C1705($port) + + This:C1470.activated:=False:C215 + +Function onData($connection : 4D:C1709.TCPConnection; $event : 4D:C1709.TCPEvent) + + var $data : 4D:C1709.Blob + $data:=$event.data + + var $text : Text + $text:=Convert to text:C1012($data; "utf-8") + + If ($text="Information") + If (This:C1470.activated) + $text:="Music is playing but no one is listening..." + Else + $text:="Music is not playing!" + End if + CONVERT FROM TEXT:C1011($text; "utf-8"; $data) + $connection.send($data) + Else + If ($text="Activate") + This:C1470.activated:=Not:C34(This:C1470.activated) + End if + End if \ No newline at end of file diff --git a/Project/Sources/Classes/Plant_Server.4dm b/Project/Sources/Classes/Plant_Server.4dm new file mode 100644 index 0000000..2ecf50e --- /dev/null +++ b/Project/Sources/Classes/Plant_Server.4dm @@ -0,0 +1,49 @@ +property activated : Boolean +property info : Integer + +Class extends TCPConnectionOption + +Class constructor($port : Integer) + + Super:C1705($port) + + This:C1470.activated:=False:C215 + This:C1470.info:=1 + +Function onData($connection : 4D:C1709.TCPConnection; $event : 4D:C1709.TCPEvent) + + var $data : 4D:C1709.Blob + $data:=$event.data + + var $text : Text + $text:=Convert to text:C1012($data; "utf-8") + + If ($text="Information") + If (This:C1470.activated) + $text:="You need to learn more about biology..." + Else + If (This:C1470.info=1) + $text:="It grows!" + End if + If (This:C1470.info=2) + $text:="It still grows!" + End if + If (This:C1470.info=3) + $text:="Still growing!" + End if + If (This:C1470.info=4) + $text:="What do you expect?" + End if + If (This:C1470.info=5) + $text:="Reset in progress..." + This:C1470.info:=0 + End if + This:C1470.info+=1 + End if + CONVERT FROM TEXT:C1011($text; "utf-8"; $data) + $connection.send($data) + Else + If ($text="Activate") + This:C1470.activated:=Not:C34(This:C1470.activated) + End if + End if \ No newline at end of file diff --git a/Project/Sources/Classes/TCPConnectionOption.4dm b/Project/Sources/Classes/TCPConnectionOption.4dm new file mode 100644 index 0000000..b4ab900 --- /dev/null +++ b/Project/Sources/Classes/TCPConnectionOption.4dm @@ -0,0 +1,21 @@ +property listener : 4D:C1709.TCPListener +property noDelay : Boolean + +Class constructor($port : Integer) + + This:C1470.noDelay:=False:C215 + + var $server : cs:C1710.TCPListenerOption + $server:=cs:C1710.TCPListenerOption.new(This:C1470) + This:C1470.listener:=4D:C1709.TCPListener.new($port; $server) + +Function onConnection($connection : 4D:C1709.TCPConnection; $event : 4D:C1709.TCPEvent) + +Function onData($connection : 4D:C1709.TCPConnection; $event : 4D:C1709.TCPEvent) + +Function onShutdown($connection : 4D:C1709.TCPConnection; $event : 4D:C1709.TCPEvent) + +Function onError($connection : 4D:C1709.TCPConnection; $event : 4D:C1709.TCPEvent) + +Function onTerminate($connection : 4D:C1709.TCPConnection; $event : 4D:C1709.TCPEvent) + \ No newline at end of file diff --git a/Project/Sources/Classes/TCPListenerOption.4dm b/Project/Sources/Classes/TCPListenerOption.4dm new file mode 100644 index 0000000..e217fda --- /dev/null +++ b/Project/Sources/Classes/TCPListenerOption.4dm @@ -0,0 +1,15 @@ +property server : Object + +Class constructor($server : cs:C1710.TCPConnectionOption) + + This:C1470.server:=$server + +Function onConnection($listener : 4D:C1709.TCPListener; $event : 4D:C1709.TCPEvent) : Object + + return This:C1470.server + +Function onError($listener : 4D:C1709.TCPListener; $event : 4D:C1709.TCPEvent) + +Function onTerminate($listener : 4D:C1709.TCPListener; $event : 4D:C1709.TCPEvent) + + KILL WORKER:C1390 \ No newline at end of file diff --git a/Project/Sources/Classes/Thermometer_Server.4dm b/Project/Sources/Classes/Thermometer_Server.4dm new file mode 100644 index 0000000..8fee2d2 --- /dev/null +++ b/Project/Sources/Classes/Thermometer_Server.4dm @@ -0,0 +1,34 @@ +property activated : Boolean +property temperature : Integer + +Class extends TCPConnectionOption + +Class constructor($port : Integer) + + Super:C1705($port) + + This:C1470.activated:=False:C215 + This:C1470.temperature:=10 + +Function onData($connection : 4D:C1709.TCPConnection; $event : 4D:C1709.TCPEvent) + + var $data : 4D:C1709.Blob + $data:=$event.data + + var $text : Text + $text:=Convert to text:C1012($data; "utf-8") + + If ($text="Information") + If (This:C1470.activated) + This:C1470.temperature+=1 + Else + This:C1470.temperature-=1 + End if + $text:="Temperature is "+String:C10(This:C1470.temperature)+" degree Celsius" + CONVERT FROM TEXT:C1011($text; "utf-8"; $data) + $connection.send($data) + Else + If ($text="Activate") + This:C1470.activated:=Not:C34(This:C1470.activated) + End if + End if \ No newline at end of file diff --git a/Project/Sources/Forms/HDI2/ObjectMethods/BtnOK.4dm b/Project/Sources/Forms/HDI2/ObjectMethods/BtnOK.4dm index 134c3f4..322f820 100644 --- a/Project/Sources/Forms/HDI2/ObjectMethods/BtnOK.4dm +++ b/Project/Sources/Forms/HDI2/ObjectMethods/BtnOK.4dm @@ -1,9 +1,18 @@ +var $event : Object +$event:=FORM Event:C1606 Case of - : (Form event code:C388=On Clicked:K2:4) - If (Is Windows:C1573 && Get application info:C1599().SDIMode) - INVOKE ACTION:C1439(ak return to design mode:K76:62) - Else - CANCEL:C270 - End if + : ($event.code=On Clicked:K2:4) + + Case of + : (FORM Get current page:C276=1) + + FORM GOTO PAGE:C247(2) + + : (FORM Get current page:C276=2) + + CANCEL:C270 + + End case + End case \ No newline at end of file diff --git a/Project/Sources/Forms/HDI2/ObjectMethods/OpenLog.4dm b/Project/Sources/Forms/HDI2/ObjectMethods/OpenLog.4dm index ef9c01e..910b536 100644 --- a/Project/Sources/Forms/HDI2/ObjectMethods/OpenLog.4dm +++ b/Project/Sources/Forms/HDI2/ObjectMethods/OpenLog.4dm @@ -1,2 +1,3 @@ +var $file : 4D:C1709.File $file:=File:C1566("/LOGS/4DTCPLog_1.txt") OPEN URL:C673($file.platformPath) diff --git a/Project/Sources/Forms/HDI2/ObjectMethods/StartServers.4dm b/Project/Sources/Forms/HDI2/ObjectMethods/StartServers.4dm index c7dd320..97160f0 100644 --- a/Project/Sources/Forms/HDI2/ObjectMethods/StartServers.4dm +++ b/Project/Sources/Forms/HDI2/ObjectMethods/StartServers.4dm @@ -1,5 +1,26 @@ -CALL WORKER:C1389("4D_Lightbulb_Server"; Formula:C1597(4D_Lightbulb_Server)) -CALL WORKER:C1389("4D_Thermometer_Server"; Formula:C1597(4D_Thermometer_Server)) -CALL WORKER:C1389("4D_Alarm_Server"; Formula:C1597(4D_Alarm_Server)) -CALL WORKER:C1389("4D_Music_Server"; Formula:C1597(4D_Music_Server)) -CALL WORKER:C1389("4D_Plant_Server"; Formula:C1597(4D_Plant_Server)) \ No newline at end of file +If (FORM Event:C1606.code=On Clicked:K2:4) + + var $workers : Collection + $workers:=Process activity:C1495(Processes only:K5:35).processes.query("type = :1"; Worker process:K36:32).extract("name") + + If ($workers.indexOf("4D_Lightbulb_Server")=-1) + CALL WORKER:C1389("4D_Lightbulb_Server"; Formula:C1597(4D_Lightbulb_Server); Form:C1466.lightBulb.port) + End if + + If ($workers.indexOf("4D_Thermometer_Server")=-1) + CALL WORKER:C1389("4D_Thermometer_Server"; Formula:C1597(4D_Thermometer_Server); Form:C1466.thermometer.port) + End if + + If ($workers.indexOf("4D_Alarm_Server")=-1) + CALL WORKER:C1389("4D_Alarm_Server"; Formula:C1597(4D_Alarm_Server); Form:C1466.alarm.port) + End if + + If ($workers.indexOf("4D_Music_Server")=-1) + CALL WORKER:C1389("4D_Music_Server"; Formula:C1597(4D_Music_Server); Form:C1466.music.port) + End if + + If ($workers.indexOf("4D_Plant_Server")=-1) + CALL WORKER:C1389("4D_Plant_Server"; Formula:C1597(4D_Plant_Server); Form:C1466.plant.port) + End if + +End if \ No newline at end of file diff --git a/Project/Sources/Forms/HDI2/form.4DForm b/Project/Sources/Forms/HDI2/form.4DForm index babfbb0..3811055 100644 --- a/Project/Sources/Forms/HDI2/form.4DForm +++ b/Project/Sources/Forms/HDI2/form.4DForm @@ -13,7 +13,7 @@ "markerFooter": 240, "events": [ "onLoad", - "onCloseBox" + "onUnload" ], "method": "method.4dm", "pageFormat": { @@ -212,7 +212,8 @@ "events": [ "onClick" ], - "method": "ObjectMethods/ButtonConnect.4dm" + "method": "ObjectMethods/ButtonConnect.4dm", + "focusable": false }, "ButtonInfo": { "type": "button", @@ -224,7 +225,8 @@ "events": [ "onClick" ], - "method": "ObjectMethods/ButtonInfo.4dm" + "method": "ObjectMethods/ButtonInfo.4dm", + "focusable": false }, "ButtonActivate": { "type": "button", @@ -236,7 +238,8 @@ "events": [ "onClick" ], - "method": "ObjectMethods/ButtonActivate.4dm" + "method": "ObjectMethods/ButtonActivate.4dm", + "focusable": false }, "ButtonDisconnect": { "type": "button", @@ -248,7 +251,8 @@ "events": [ "onClick" ], - "method": "ObjectMethods/ButtonDisconnect.4dm" + "method": "ObjectMethods/ButtonDisconnect.4dm", + "focusable": false }, "StartServers": { "type": "button", @@ -260,7 +264,8 @@ "events": [ "onClick" ], - "method": "ObjectMethods/StartServers.4dm" + "method": "ObjectMethods/StartServers.4dm", + "focusable": false }, "OpenLog": { "type": "button", @@ -272,7 +277,8 @@ "events": [ "onClick" ], - "method": "ObjectMethods/OpenLog.4dm" + "method": "ObjectMethods/OpenLog.4dm", + "focusable": false } } } diff --git a/Project/Sources/Forms/HDI2/method.4dm b/Project/Sources/Forms/HDI2/method.4dm index c6f54b5..f27aa2e 100644 --- a/Project/Sources/Forms/HDI2/method.4dm +++ b/Project/Sources/Forms/HDI2/method.4dm @@ -1,6 +1,8 @@ +var $event : Object +$event:=FORM Event:C1606 + Case of - - : (Form event code:C388=On Load:K2:1) + : ($event.code=On Load:K2:1) InitInfo @@ -10,12 +12,22 @@ Case of Form:C1466.music:=cs:C1710.HouseDevice.new(Form:C1466; 19823) Form:C1466.plant:=cs:C1710.HouseDevice.new(Form:C1466; 19824) - : (Form event code:C388=On Close Box:K2:21) - If (Is Windows:C1573 && Application info:C1599().SDIMode) - QUIT 4D:C291 - Else - CANCEL:C270 - End if + OBJECT SET ENABLED:C1123(*; "ButtonConnect"; False:C215) + OBJECT SET ENABLED:C1123(*; "ButtonInfo"; False:C215) + OBJECT SET ENABLED:C1123(*; "ButtonActivate"; False:C215) + OBJECT SET ENABLED:C1123(*; "ButtonDisconnect"; False:C215) -End case - + : ($event.code=On Unload:K2:2) + + Form:C1466.lightBulb.disconnect() + Form:C1466.thermometer.disconnect() + Form:C1466.alarm.disconnect() + Form:C1466.music.disconnect() + Form:C1466.plant.disconnect() + + var $name : Text + For each ($name; ["4D_Lightbulb_Server"; "4D_Thermometer_Server"; "4D_Alarm_Server"; "4D_Music_Server"; "4D_Plant_Server"]) + CALL WORKER:C1389($name; Formula:C1597(terminateServer)) + End for each + +End case \ No newline at end of file diff --git a/Project/Sources/Methods/00_Start.4dm b/Project/Sources/Methods/00_Start.4dm index b590ecb..45b30e6 100644 --- a/Project/Sources/Methods/00_Start.4dm +++ b/Project/Sources/Methods/00_Start.4dm @@ -1,8 +1,9 @@ //%attributes = {} -C_LONGINT:C283($1) -C_LONGINT:C283($ps; $win) -C_OBJECT:C1216($options) -C_TEXT:C284($cr) +#DECLARE($p : Integer) + +var $ps; $win : Integer +var $options : Object +var $cr : Text Case of : (Count parameters:C259=0) @@ -13,7 +14,7 @@ Case of ALERT:C41("Sorry, this \"How do I\" (HDI) example must be used with a newer version of 4D (v16 R6 and above)"; "Quit") QUIT 4D:C291 Else - $ps:=New process:C317(Current method name:C684; 0; Current method name:C684; 0) + $ps:=New process:C317(Current method name:C684; 0; Current method name:C684; 0; *) End if Else @@ -33,7 +34,7 @@ Case of $options.blog:="blog.4d.com" $options.info:="Using TCPConnection to connect to a server" //ex : "4D View Pro feature" - $options.minimumVersion:="2080" // 1660 means 16R6 1601 means 16.1 (do not use !) + $options.minimumVersion:="2090" // 1660 means 16R6 1601 means 16.1 (do not use !) // $options.license:=4D View license // IF ANY NEEDED diff --git a/Project/Sources/Methods/4D_Alarm_Server.4dm b/Project/Sources/Methods/4D_Alarm_Server.4dm index 22512e1..b765508 100644 --- a/Project/Sources/Methods/4D_Alarm_Server.4dm +++ b/Project/Sources/Methods/4D_Alarm_Server.4dm @@ -1,38 +1,9 @@ -//%attributes = {} -var $vStatus : Integer -var $TCP_ID : Integer -var $data : Blob -var $blob : Blob +//%attributes = {"invisible":true,"preemptive":"capable"} +#DECLARE($port : Integer) -var $activated:=False:C215 +var $server : cs:C1710.TCPConnectionOption +$server:=cs:C1710.Alarm_Server.new($port) -Repeat - $err:=TCP_Listen(""; 0; 19822; 0; $TCP_ID) - $err:=TCP_State($TCP_ID; $vStatus) - - If ($vStatus=8) - Repeat - DELAY PROCESS:C323(Current process:C322; 2) - $err:=TCP_ReceiveBLOB($TCP_ID; $data) - $err:=TCP_State($TCP_ID; $vStatus) - - If (BLOB size:C605($data)#0) - $text:=BLOB to text:C555($data; 0) - If ($text="Information") - If ($activated) - TEXT TO BLOB:C554("Alarm\r\n is on! Nothing to report."; $blob; UTF8 C string:K22:15) - Else - TEXT TO BLOB:C554("Alarm is off! You should turn it on."; $blob; UTF8 C string:K22:15) - End if - TCP_SendBLOB($TCP_ID; $blob) - Else - If ($text="Activate") - $activated:=Not:C34($activated) - End if - End if - End if - - Until (($vStatus=0) | ($err#0)) - TCP_Close($TCP_ID) - End if -Until (False:C215) \ No newline at end of file +Use (Storage:C1525) + Storage:C1525[Current method name:C684]:=$server.listener +End use \ No newline at end of file diff --git a/Project/Sources/Methods/4D_Lightbulb_Server.4dm b/Project/Sources/Methods/4D_Lightbulb_Server.4dm index 482f814..3b87862 100644 --- a/Project/Sources/Methods/4D_Lightbulb_Server.4dm +++ b/Project/Sources/Methods/4D_Lightbulb_Server.4dm @@ -1,38 +1,9 @@ -//%attributes = {} -var $vStatus : Integer -var $TCP_ID : Integer -var $data : Blob -var $blob : Blob +//%attributes = {"invisible":true,"preemptive":"capable"} +#DECLARE($port : Integer) -var $activated:=False:C215 +var $server : cs:C1710.TCPConnectionOption +$server:=cs:C1710.Lightbulb_Server.new($port) -Repeat - $err:=TCP_Listen(""; 0; 19820; 0; $TCP_ID) - $err:=TCP_State($TCP_ID; $vStatus) - - If ($vStatus=8) - DELAY PROCESS:C323(Current process:C322(); 2) - Repeat - $err:=TCP_ReceiveBLOB($TCP_ID; $data) - $err:=TCP_State($TCP_ID; $vStatus) - - If (BLOB size:C605($data)#0) - $text:=BLOB to text:C555($data; 0) - If ($text="Information") - If ($activated) - TEXT TO BLOB:C554("Light is on!"; $blob; UTF8 C string:K22:15) - Else - TEXT TO BLOB:C554("Light is off!"; $blob; UTF8 C string:K22:15) - End if - TCP_SendBLOB($TCP_ID; $blob) - Else - If ($text="Activate") - $activated:=Not:C34($activated) - End if - End if - End if - - Until (($vStatus=0) | ($err#0)) - End if - TCP_Close($TCP_ID) -Until (False:C215) \ No newline at end of file +Use (Storage:C1525) + Storage:C1525[Current method name:C684]:=$server.listener +End use \ No newline at end of file diff --git a/Project/Sources/Methods/4D_Music_Server.4dm b/Project/Sources/Methods/4D_Music_Server.4dm index 0273ffa..4a94657 100644 --- a/Project/Sources/Methods/4D_Music_Server.4dm +++ b/Project/Sources/Methods/4D_Music_Server.4dm @@ -1,39 +1,9 @@ -//%attributes = {} -var $vStatus : Integer -var $TCP_ID : Integer -var $data : Blob -var $blob : Blob +//%attributes = {"invisible":true,"preemptive":"capable"} +#DECLARE($port : Integer) -var $activated:=False:C215 +var $server : cs:C1710.TCPConnectionOption +$server:=cs:C1710.Music_Server.new($port) -Repeat - $err:=TCP_Listen(""; 0; 19823; 0; $TCP_ID) - $err:=TCP_State($TCP_ID; $vStatus) - - If ($vStatus=8) - DELAY PROCESS:C323(Current process:C322(); 2) - Repeat - $err:=TCP_ReceiveBLOB($TCP_ID; $data) - $err:=TCP_State($TCP_ID; $vStatus) - - If (BLOB size:C605($data)#0) - $text:=BLOB to text:C555($data; 0) - If ($text="Information") - If ($activated) - TEXT TO BLOB:C554("Music is playing but no one is listening..."; $blob; UTF8 C string:K22:15) - Else - TEXT TO BLOB:C554("Music is not playing!"; $blob; UTF8 C string:K22:15) - End if - TCP_SendBLOB($TCP_ID; $blob) - Else - If ($text="Activate") - $activated:=Not:C34($activated) - End if - End if - End if - - Until (($vStatus=0) | ($err#0)) - End if - - TCP_Close($TCP_ID) -Until (False:C215) \ No newline at end of file +Use (Storage:C1525) + Storage:C1525[Current method name:C684]:=$server.listener +End use \ No newline at end of file diff --git a/Project/Sources/Methods/4D_Plant_Server.4dm b/Project/Sources/Methods/4D_Plant_Server.4dm index 8bb7470..26d0bbb 100644 --- a/Project/Sources/Methods/4D_Plant_Server.4dm +++ b/Project/Sources/Methods/4D_Plant_Server.4dm @@ -1,55 +1,9 @@ -//%attributes = {} -var $vStatus : Integer -var $TCP_ID : Integer -var $data : Blob -var $blob : Blob +//%attributes = {"invisible":true,"preemptive":"capable"} +#DECLARE($port : Integer) -var $activated:=False:C215 -var $info:=1 +var $server : cs:C1710.TCPConnectionOption +$server:=cs:C1710.Plant_Server.new($port) -Repeat - $err:=TCP_Listen(""; 0; 19824; 0; $TCP_ID) - $err:=TCP_State($TCP_ID; $vStatus) - - If ($vStatus=8) - DELAY PROCESS:C323(Current process:C322(); 2) - Repeat - $err:=TCP_ReceiveBLOB($TCP_ID; $data) - $err:=TCP_State($TCP_ID; $vStatus) - - If (BLOB size:C605($data)#0) - $text:=BLOB to text:C555($data; 0) - If ($text="Information") - If ($activated) - TEXT TO BLOB:C554("You need to learn more about biology..."; $blob; UTF8 C string:K22:15) - Else - If ($info=1) - TEXT TO BLOB:C554("It grows!"; $blob; UTF8 C string:K22:15) - End if - If ($info=2) - TEXT TO BLOB:C554("It still grows!"; $blob; UTF8 C string:K22:15) - End if - If ($info=3) - TEXT TO BLOB:C554("Still growing!"; $blob; UTF8 C string:K22:15) - End if - If ($info=4) - TEXT TO BLOB:C554("What do you expect?"; $blob; UTF8 C string:K22:15) - End if - If ($info=5) - TEXT TO BLOB:C554("Reset in progress..."; $blob; UTF8 C string:K22:15) - $info:=0 - End if - $info+=1 - End if - TCP_SendBLOB($TCP_ID; $blob) - Else - If ($text="Activate") - $activated:=Not:C34($activated) - End if - End if - End if - - Until (($vStatus=0) | ($err#0)) - End if - TCP_Close($TCP_ID) -Until (False:C215) \ No newline at end of file +Use (Storage:C1525) + Storage:C1525[Current method name:C684]:=$server.listener +End use \ No newline at end of file diff --git a/Project/Sources/Methods/4D_Thermometer_Server.4dm b/Project/Sources/Methods/4D_Thermometer_Server.4dm index 1f196ce..e0d554a 100644 --- a/Project/Sources/Methods/4D_Thermometer_Server.4dm +++ b/Project/Sources/Methods/4D_Thermometer_Server.4dm @@ -1,41 +1,9 @@ -//%attributes = {} -var $vStatus : Integer -var $TCP_ID : Integer -var $data : Blob -var $blob : Blob -var $temperature:=10 +//%attributes = {"invisible":true,"preemptive":"capable"} +#DECLARE($port : Integer) -var $activated:=False:C215 +var $server : cs:C1710.TCPConnectionOption +$server:=cs:C1710.Thermometer_Server.new($port) -Repeat - $err:=TCP_Listen(""; 0; 19821; 0; $TCP_ID) - $err:=TCP_State($TCP_ID; $vStatus) - - If ($vStatus=8) - DELAY PROCESS:C323(Current process:C322(); 2) - Repeat - $err:=TCP_ReceiveBLOB($TCP_ID; $data) - $err:=TCP_State($TCP_ID; $vStatus) - - If (BLOB size:C605($data)#0) - $text:=BLOB to text:C555($data; 0) - If ($text="Information") - If ($activated) - $temperature+=1 - Else - $temperature-=1 - End if - $text:="Temperature is "+String:C10($temperature)+" degree Celsius" - TEXT TO BLOB:C554($text; $blob; UTF8 C string:K22:15) - TCP_SendBLOB($TCP_ID; $blob) - Else - If ($text="Activate") - $activated:=Not:C34($activated) - End if - End if - End if - - Until (($vStatus=0) | ($err#0)) - End if - TCP_Close($TCP_ID) -Until (False:C215) \ No newline at end of file +Use (Storage:C1525) + Storage:C1525[Current method name:C684]:=$server.listener +End use \ No newline at end of file diff --git a/Project/Sources/Methods/m_Quit.4dm b/Project/Sources/Methods/m_Quit.4dm index 73271b7..8466455 100644 --- a/Project/Sources/Methods/m_Quit.4dm +++ b/Project/Sources/Methods/m_Quit.4dm @@ -1,2 +1,2 @@ -//%attributes = {} -QUIT 4D:C291 +//%attributes = {"invisible":true,"preemptive":"incapable"} +QUIT 4D:C291 \ No newline at end of file diff --git a/Project/Sources/Methods/terminateServer.4dm b/Project/Sources/Methods/terminateServer.4dm new file mode 100644 index 0000000..32b5481 --- /dev/null +++ b/Project/Sources/Methods/terminateServer.4dm @@ -0,0 +1,14 @@ +//%attributes = {"invisible":true,"preemptive":"capable"} +var $name : Text +$name:=Current process name:C1392 + +If (Storage:C1525[$name]#Null:C1517) + Storage:C1525[$name].terminate() + //you must terminate the listener from the process that created it + //attention + //if you kill the TCPListener without terminating it + //you will no longer be able to create a new listener for the same port + Use (Storage:C1525) + OB REMOVE:C1226(Storage:C1525; $name) + End use +End if \ No newline at end of file diff --git a/Project/Sources/folders.json b/Project/Sources/folders.json index 951beee..1135dd1 100644 --- a/Project/Sources/folders.json +++ b/Project/Sources/folders.json @@ -1,13 +1,28 @@ { - "Default Folder": { - "groups": [ - "Default Forms", - "Default Project Methods", - "Default Tables" + "HDI": { + "tables": [ + "INFO" + ], + "methods": [ + "00_Start", + "InitInfo", + "m_Quit" + ], + "forms": [ + "[INFO]Input", + "[INFO]Output", + "HDI", + "HDI2" + ] + }, + "Servers": { + "methods": [ + "4D_Alarm_Server", + "4D_Lightbulb_Server", + "4D_Music_Server", + "4D_Plant_Server", + "4D_Thermometer_Server" ] }, - "Default Forms": {}, - "Default Project Methods": {}, - "Default Tables": {}, "trash": {} } \ No newline at end of file diff --git a/Project/Sources/settings.4DSettings b/Project/Sources/settings.4DSettings index 858d664..35770d6 100644 --- a/Project/Sources/settings.4DSettings +++ b/Project/Sources/settings.4DSettings @@ -1,4 +1,4 @@ - + @@ -8,7 +8,7 @@ - + diff --git a/readme.md b/readme.md index a1f56e1..bc2ac53 100644 --- a/readme.md +++ b/readme.md @@ -1,6 +1,10 @@ +![version](https://img.shields.io/badge/version-20%20R9%2B-E23089) + # HDI_TCPConnection -Description (4D 20 R8) +Description (4D 20 R9) + +goto [R8 branch](https://github.com/miyako/HDI_TCPConnection/blob/r8/readme.md) for the version that does not use `TCPListener` Find more information on the [blog post](https://blog.4d.com/new-class-to-perform-tcp-connections).