PaperTrader/docs/protocol.toc

95 lines
6.9 KiB
TeX

\contentsline {section}{\numberline {1}Introduction}{4}%
\contentsline {section}{\numberline {2}Overview}{4}%
\contentsline {subsection}{\numberline {2.1}Terminology}{4}%
\contentsline {subsubsection}{\numberline {2.1.1}Inner World}{4}%
\contentsline {subsubsection}{\numberline {2.1.2}Outer World}{4}%
\contentsline {subsubsection}{\numberline {2.1.3}Critical Data}{4}%
\contentsline {subsubsection}{\numberline {2.1.4}User/Client}{4}%
\contentsline {subsubsection}{\numberline {2.1.5}User/Client Data}{4}%
\contentsline {subsubsection}{\numberline {2.1.6}Module}{4}%
\contentsline {subsubsection}{\numberline {2.1.7}Master Server}{5}%
\contentsline {subsubsection}{\numberline {2.1.8}Worker Servers}{5}%
\contentsline {subsubsection}{\numberline {2.1.9}User Accounts}{5}%
\contentsline {subsection}{\numberline {2.2}Infrastructure Model}{5}%
\contentsline {subsubsection}{\numberline {2.2.1}Master Server Infrastructure Model}{5}%
\contentsline {subsubsection}{\numberline {2.2.2}Worker Servers Infrastructure Model}{6}%
\contentsline {subsection}{\numberline {2.3}Global Deployment Variables}{6}%
\contentsline {subsubsection}{\numberline {2.3.1}List of assets to retrieve}{6}%
\contentsline {subsubsection}{\numberline {2.3.2}Number of Workers}{6}%
\contentsline {subsubsection}{\numberline {2.3.3}Memory Size of Log system}{6}%
\contentsline {subsubsection}{\numberline {2.3.4}Stock Data Update Interval}{6}%
\contentsline {subsection}{\numberline {2.4}Data/State Structures}{7}%
\contentsline {subsubsection}{\numberline {2.4.1}Account Structure}{7}%
\contentsline {subsubsection}{\numberline {2.4.2}Session Structure}{7}%
\contentsline {subsubsection}{\numberline {2.4.3}Asset Structure}{7}%
\contentsline {subsubsection}{\numberline {2.4.4}LogEntry Structure}{8}%
\contentsline {subsubsection}{\numberline {2.4.5}WorkerServer Structure}{8}%
\contentsline {subsubsection}{\numberline {2.4.6}MasterState Structure}{8}%
\contentsline {subsubsection}{\numberline {2.4.7}WorkerState Structure}{8}%
\contentsline {section}{\numberline {3}A more Technical Overview}{8}%
\contentsline {subsection}{\numberline {3.1}Master Server}{9}%
\contentsline {subsubsection}{\numberline {3.1.1}Main Module}{9}%
\contentsline {subsubsection}{\numberline {3.1.2}Database Management}{9}%
\contentsline {subsubsection}{\numberline {3.1.3}Account Management \& Authorization}{10}%
\contentsline {subsubsection}{\numberline {3.1.4}Log System}{10}%
\contentsline {subsubsection}{\numberline {3.1.5}Worker Management}{10}%
\contentsline {subsubsection}{\numberline {3.1.6}Assets Data Retrieval}{11}%
\contentsline {subsubsection}{\numberline {3.1.7}Assets Buy \& Sell}{11}%
\contentsline {subsection}{\numberline {3.2}Worker Server}{11}%
\contentsline {subsubsection}{\numberline {3.2.1}Main Module}{12}%
\contentsline {subsubsection}{\numberline {3.2.2}Master Server Communication}{12}%
\contentsline {subsubsection}{\numberline {3.2.3}Client Management}{12}%
\contentsline {subsubsection}{\numberline {3.2.4}Account Authorization Tunnel}{12}%
\contentsline {subsubsection}{\numberline {3.2.5}Logging System}{13}%
\contentsline {subsubsection}{\numberline {3.2.6}Cache Management}{13}%
\contentsline {section}{\numberline {4}The Protocol}{13}%
\contentsline {subsection}{\numberline {4.1}Design Goals}{13}%
\contentsline {subsection}{\numberline {4.2}States}{14}%
\contentsline {subsubsection}{\numberline {4.2.1}Command State}{14}%
\contentsline {subsubsection}{\numberline {4.2.2}Data Transfer State}{15}%
\contentsline {subsection}{\numberline {4.3}The Connection}{15}%
\contentsline {subsubsection}{\numberline {4.3.1}Master-Worker Server Connection}{15}%
\contentsline {subsubsection}{\numberline {4.3.2}Client-Worker Server Connection}{15}%
\contentsline {subsection}{\numberline {4.4}Message Structure}{15}%
\contentsline {subsection}{\numberline {4.5}Instructions}{16}%
\contentsline {subsubsection}{\numberline {4.5.1}Command State Instructions}{16}%
\contentsline {subsubsection}{\numberline {4.5.2}Data Transfer State Instructions}{16}%
\contentsline {subsubsection}{\numberline {4.5.3}Server Return Instructions}{17}%
\contentsline {subsection}{\numberline {4.6}Overivew of The Instructions}{17}%
\contentsline {subsubsection}{\numberline {4.6.1}login(name, hashedPass, isExpirable)}{17}%
\contentsline {subsubsection}{\numberline {4.6.2}login(sessionID)}{17}%
\contentsline {subsubsection}{\numberline {4.6.3}register(username, email, hashedPass)}{18}%
\contentsline {subsubsection}{\numberline {4.6.4}purchaseAsset(sessionID, name, quantity)}{18}%
\contentsline {subsubsection}{\numberline {4.6.5}sellAsset(sessionID, name, quantity)}{18}%
\contentsline {subsubsection}{\numberline {4.6.6}switchState(sessionID, state)}{18}%
\contentsline {subsubsection}{\numberline {4.6.7}getAssetInfo(asset)}{18}%
\contentsline {subsubsection}{\numberline {4.6.8}getAssetValueCurrent(asset)}{18}%
\contentsline {subsubsection}{\numberline {4.6.9}getAssetValueDay(asset, date)}{19}%
\contentsline {subsubsection}{\numberline {4.6.10}getAssetValueWeek(asset, date)}{19}%
\contentsline {subsubsection}{\numberline {4.6.11}getAssetValueMonth(asset, date)}{19}%
\contentsline {subsubsection}{\numberline {4.6.12}getAssetValueYear(asset, date)}{19}%
\contentsline {subsubsection}{\numberline {4.6.13}getAssetValueAllTime(asset)}{19}%
\contentsline {subsubsection}{\numberline {4.6.14}getUserInfo(sessionID, username)}{19}%
\contentsline {subsubsection}{\numberline {4.6.15}getUserPortfolio(sessionID, username)}{20}%
\contentsline {subsubsection}{\numberline {4.6.16}getUserTransactionHistroy(sessionID, username)}{20}%
\contentsline {subsubsection}{\numberline {4.6.17}loginFail}{20}%
\contentsline {subsubsection}{\numberline {4.6.18}sessionID}{20}%
\contentsline {subsubsection}{\numberline {4.6.19}registerSuccess}{20}%
\contentsline {subsubsection}{\numberline {4.6.20}registerFail}{20}%
\contentsline {subsubsection}{\numberline {4.6.21}purchaseSuccess}{20}%
\contentsline {subsubsection}{\numberline {4.6.22}purchaseFail}{20}%
\contentsline {subsubsection}{\numberline {4.6.23}sellSucecss}{20}%
\contentsline {subsubsection}{\numberline {4.6.24}sellFail}{21}%
\contentsline {subsubsection}{\numberline {4.6.25}stateSwitchSuccess}{21}%
\contentsline {subsubsection}{\numberline {4.6.26}stateSwitchFail}{21}%
\contentsline {subsubsection}{\numberline {4.6.27}data}{21}%
\contentsline {subsubsection}{\numberline {4.6.28}dataFail}{21}%
\contentsline {subsection}{\numberline {4.7}Communication}{21}%
\contentsline {subsubsection}{\numberline {4.7.1}Data Transfer Mechanism}{21}%
\contentsline {subsubsection}{\numberline {4.7.2}Login - First Method}{22}%
\contentsline {subsubsection}{\numberline {4.7.3}Login - Second Method}{22}%
\contentsline {subsubsection}{\numberline {4.7.4}Register}{22}%
\contentsline {subsubsection}{\numberline {4.7.5}Purchase}{23}%
\contentsline {subsubsection}{\numberline {4.7.6}Sell}{23}%
\contentsline {subsubsection}{\numberline {4.7.7}get(Data)}{24}%