Sign in to follow this  

Scrut Hut Network Protocol Version 2

This topic is 827 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

How does this protocol look at first glances.  It uses tokens encoded by objects serialized and passed on the stream; basic system functionality can be controlled by using token streams.  I have one token stream per kernel in my system, and one per module supporting intermodular communication.  I am attempting to pipe the kernel streams from networked machines to allow a single workspace where all machines act as if they are running as a single application.

 

Just needs to be expanded for user based support, more organized system, and chat support with file transfer support.  I plan to develop a webserver with http protocol, and load in a module where the web server can link to my game servers; this way server stats can be displayed on my webpage.  But webserver would most likey provide a server side script done in house instead of php or anything.  Just a project...

Tokens - Null Token ( 0x00 )
KernelToken - Generally Active Behavior
KernelSetStateToken - Active only
KernelGetStateToken - Active or Passive
KernelLoadModuleToken - Active only
KernelUnloadModuleToken - Active only
KernelLinkStreamToken - Active only
KernelUnlinkStreamToken - Active only
KernelVariableSendToken - Active only
KernelVariableRequestToken - Active or Passive
KernelVariableRemoveToken - Active only
GloablToken - Either Active or Passive communication
GlobalHandshakeToken - Active only
GlobalTerminateToken - Active or Passive
GlobalAcknowledgementToken - Passive only
GlobalSuccessToken - Active only
GlobalSynchronizeToken - Active or Passive
GlobalPendingToken - Passive only
GlobalFlushToken - Active only
Module - Generally Active Behavior
ModuleRequestObjectToken - Active only
ModuleCollectGarbageToken - Active or Passive
ModuleReapObjectsToken - Active or Passive
ModuleCloseLibrary - Active only
ModuleCreateObjectToken - Active only
ModuleDestroyObjectToken - Active only
ModuleSendCommandToken - Active only
ModuleListenCommandToken - Active only
ExecutableResourceToken - Generally Active Behavior
LinkScrutByteCodeToken - Active only
UnlinkScrutByteCodeToken - Active only
ExecuteScrutByteCodeToken - Active only
SendScrutByteCodeToken - Active only
TranslateScriptToken - Active only
LoadScriptToken - Active only
UnloadScriptToken - Active only
SendScribbleToken - Active only
SendScrasmToken - Active only
ExecuteScriptToken - Active only
PauseScriptToken - Active only
ObjectToken - Active or Passive Behavior
ObjectNullToken - Active or Passive only
ObjectPointerToken - Active or Passive only
ObjectReferenceToken - Active or Passive only
ObjectSerializedToken - Active or Passive only
StreamToken - Generally Active Behavior
StreamRewindToken - Active only
StreamFlushToken - Active only
StreamNullToken - Active or Passive

-----------------------------------------------------------------------

Machine 1 - Active Connection ( host )
Machine 2 - Passive Connection ( client )

Remember which machine is Active and Passive Connection. A Passive connection
can never request to send executable resources to the Active connection; this
eliminates the possibility of the client taken control of the host. Not all
request are appropriate and process successfully depending on Connection
Status.

Begin Communication
Connection via handshake and confirmed success
Machine 1 >> Machine 2 -> GlobalHandshakeToken
Machine 2 >> Machine 1 -> GlobalAcknowledgementToken
Machine 1 >> Machine 2 -> GlobalSuccessToken

--- pass tokens within this block for proper communication ---

End Communication
Connection passed handshake will now terminate
Machine 1 >> Machine 2 -> GlobalTerminateToken
Machine 2 >> Machine 1 -> GlobalAcknowledgementToken
Machine 1 >> Machine 2 -> GlobalSuccessToken

-----------------------------------------------------------------------

Example Blocks of Communication

Send program, then translation, execution and delete on target machine
Machine 1 >> Machine 2 -> SendScribbleToken
Machine 2 >> Machine 1 -> GlobalPendingToken
Machine 1 >> Machine 2 -> ObjectSerializedToken
Machine 1 >> Machine 2 -> GlobalAcknowledgementToken
Machine 2 >> Machine 1 -> GlobalSuccessToken
Machine 1 >> Machine 2 -> TranslateScriptToken
Machine 2 >> Machine 1 -> GlobalSuccessToken
Machine 1 >> Machine 2 -> GlobalAcknowledgement
Machine 1 >> Machine 2 -> ExecuteScrutByteCodeToken
Machine 2 >> Machine 1 -> GlobalAcknowledgement
Machine 1 >> Machine 2 -> GlobalSuccessToken
Machine 1 >> Machine 2 -> UnlinkScrutByteCodeToken
Machine 2 >> Machine 1 -> GlobalAcknowledgement
Machine 1 >> Machine 2 -> GlobalSuccessToken

Request object from machine
Machine 1 >> Machine 2 -> ModuleRequestObjectToken
Machine 2 >> Machine 1 -> GlobalAcknowledgementToken
Machine 1 >> Machine 2 -> GlobalPendingToken
Machine 2 >> Machine 1 -> ObjectSerializedToken
Machine 1 >> Machine 2 -> GlobalAcknowledgementToken
Machine 2 >> Machine 1 -> GlobalSuccessToken

Edited by lariyn@scrut.hut

Share this post


Link to post
Share on other sites
Given that you're using many words that are specific to your particular game/engine, and you're not suggesting any particular attributes to compare against, it's not clear that anyone can give you any kind of actionable feedback.

Does it work for you? If so, it's probably alright?

Share this post


Link to post
Share on other sites

The old style protocol diagram would better illustrate the interactions

 

 

 

SERVER ------------------------------------------------------------------ CLIENT

---------------------------------------------------------------------------------------

 

REQUEST ---------------msgx_token------------------------------->

<-----------------------send_msgx_block-------------------------------REPLY

ACK--------------------rcv_msgx_token---------------------------->

 

 

etc

 

etc...

Share this post


Link to post
Share on other sites
I have literally no clue what you're doing except something with a network of machines with tokens and streams.

Instead of talking of the solutions in full detail, could you explain what you are trying to achieve, ie what can you do with the system after implementation, what problem are you trying to solve??

In code terms, don't talk low level code doing the actual work, give us the CEO "I want funding for my project" summary.

Share this post


Link to post
Share on other sites

This topic is 827 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this