Beginner Dart programmer sketching class, that allows objects to participate in #commonOperation, and connect to other objects there. Project in early stage, a bunch of inspirational ideas, not meant to be developed to production app. Learning process.
Structure and documents of Connector class:
/// * Usability: 7% /// * Hist: hkl 10.9.2017 0.0.1 dawo/lib connector.dart #name: connector ..is not nice. change to: ______ ?? Connector is in deeply planning state. pp -mission - chore work together in same sphere, and there must be something, that they have in common; abstraction layer, in which they must work together. * Every #little operation is "connector-operation", and connector has knowledge for all of them and can interact with them. * Sending messages between objects. Stance, approach * "Connector-operations" have access to certain up-level variables. * Using GlobalOpClass might be too heavy.!! * ADD IS-GLOBAL bool field to Operation-classes. * Connector classes might have precedence in Mill-op. Might trig some action in their connected sister-operations. Find common interests, "I have been here".. follow-me, give-take Other objects also handle things connected to this. So connector might be just a simple message (plea) mediator. Global op does something NOTE: devNote: tracking begins. // *********************************************************************** /* connector: very weak idea, how to accomplish this. 10 % Not much of this functionality is yet done. Name: #connector is not the right one. Not nice. #clients: = app - mission's - chore's * Get "service calls" from #members: app - mission - chore; and solve them. * Have rules of privilege for precedence of missions - chores. * Give TO > mill commands, "work-orders". * Should have access to class-buffers to seek data. * Special language #dawolang, to force commands to certain shape. * #baton : to carry only-one-can-have-at-a-same-time magic thing. * * COMMAND ROLL: * 1. get command, handle parameters. * 2. Check command against rules. Take - return - reject. * 3. Full-fill command; void obey(sender, receiver, baton, msg, flags) * 4. Get answer, serve back. * 5. Mark done. * * Questions: * 1. Where do connector work? Is it upper-level loop? * .. or is it available all the time. No need to wake it. * 2. Where, how, and why is #connector invoked? * 3. ? * * IDEA: All (commands) might happen in #mill. ( an order processor system ). * IDEA: #Callback-like service calls. * IDEA: #serviceKey #baton, that only one client can have at a time. * IDEA: Privilege key. * * MAYBE: Incoming commands have certain form. Classes? Strings? * MAYBE: Access to #GOAL aso. variables. * MAYBE: * MAYBE: * * NOT: Handle #area #resource #time #money aso. properties. * NOT: * NOT: Properties and methods /// This class gets same structure base, as other important classes. /// Connecting clients (app-mission-chore) to work together. class Connector extends BaseStruct { String name = 'connector class'; String info = 'connecting app - mission - chore together, mediating them'; String motto = 'do my job, connector, mediates'; /// devNote: PLAN: Two fields for to better shape outPut stuff in console. String seal; // like: ":CONNECTOR:"; /// emblem can be used in flowC String emblem = ':con:X:'; // or this emblem. String indent; // like: " "; 3-5-7 empty marks or something visible. // Like: ":ALLOW X :LOW Y :ROLE Z :GOAL XX :OPEN YY String clause; // Combination of #LANG words in sentence. String master; // Object that owns this. // Buffer inside class for output. StringBuffer buf = new StringBuffer(); /// Controlling connectors state, working-condition-state values. bool offB = true; bool onB = false; bool pauseB; bool doneB = false; /// ***************************************************************** /// GlobalOperation ?* Using GlobalOpClass might be too heavy.!! /// var msgBus * Sending messages between objects. Stance, approach /// #New: #Gear Something turns around this. /// the sail pivots around the axis of a virtually static mast var pivot; /// or: void metro() {} for putting messages to move. /// PING, Putting messages in queue or sending them immediately. void ping(var sender, var receiver, var key) { /// code } /// Members, that are participating in this connector. /// Member is a class in base_struct. Map<String, Member> memberM = {}; /// get / collect bindings /// Processes, that are bind inside connector. Map<String, Map<dynamic, dynamic>> bindingM = {}; // Connect Members action to one or many other Members action. String bind(var senderProcess, var receiverProcess, var thing) { // Idea: Have some binding-models and types. // add / find from bindingM Map return 'binding: #one to: #second'; /// Connector base activity, keep list of Members / their operations. /// devNote: Or should it be something smaller? abstract class BasePlacard? List<GlobalOpClass> opL = new List(); /// Join "clients" / Members to opList. placardM mediates necessary info. void opJoin(Map<String, String> plcM, String caller) { /// Operations register to Connector with placardM. // 'actor': 'Chore', // 'sender': 'Chore instance', // 'receiver': '', // 'command': 'Ch-cmd:', // 'msg': 'Ch-msg:', // ******************************* /// code: print('-->>-->>-- :connector: C:$caller -->>-->>--'); print(info); tl.operationMapPrint(plcM); print('--<<--<<-- :connector: done C:$caller --<<--<<--'); } /// Here goes normal init-build-roll-show-done -round. No loop. /// Method for setting class field values to their run-time-values. /// Called by: roll. void init() { buf.writeln('--- Connector buffer output initialized ---'); // Set fields values. buf.writeln('init done'); } /// Method for setting class in working condition. /// CalledBy: roll. void build(String _emblem, String _master) { offB = false; // off-state ends onB = true; // Connector is in on-state. buf.writeln('build done'); } /// #run / roll method void roll() { buf.writeln('Connector:: $info :: roll engaged '); init(); // calling init and build methods in this class. // TODO connector Build parameters. build('*CONNECTOR:', 'CONNENCTORS-MASTER:'); // code for roll // *** code missing, see on top of this file // show(); done(); // code here } /// Method for #Members to take part in common operations. void rollCommon() { } /// Gives members privileges in common operations.. void sharer() { } /// Presentation method. void show() { print(buf); } /// close method void done() { print('Connector:: $info :: engaged '); // code here buf.write('--- Connector buffer output app: done ---'); print(buf); buf.clear(); // empty buffer }And now section, that handles last small details:
/// TODO Name for next 3 fields might be opTouche aso. /// Solve one unambiguous textual find-decide problem. /// NOTE: might be separate Touche class. String touch(String sender, String key, String source) { // TODO problem return 'solved:toucheStr: '; } /// Search big amount of #clay data for #customer:s key / order. /// .. solve textual problems based on keywords / search in textual data /// NOTE: might be separate Solver class. String solve(String sender, String key, String source) { // TODO problem return 'solved: solveString'; } /// TODO: connector one-time calls must have parameters; /// Sketching one-time commands, coming from clients. void obey(String sender, receiver, baton, msg) { /// #baton to carry only-one-can-have-at-a-same-time magic thing // TODO code, badly missing // handle command / message } // ***************************************************************** /// Calling print/print-to-buffer function from base_lib. /// Getting local variables; Actor and Buffer right. void flowC(String msg, bool p) { /// Call flowServe with #LOCAL variables. flowServe(':con:', buf, msg, p); } /// constructor Connector(this.name, this.info); } /// Create instance of Connector. var con = new Connector('DawoAppconnector', 'Connection operations');Chore calls this: con.opJoin(placardM, ':Chr:');/// Testing placardM inside chore./// Present info for outer process calls.Map<String, String> placardM = { 'actor': 'Chore', 'sender': 'Chore instance', 'receiver': '', 'command': 'Ch-cmd:', 'msg': 'Ch-msg:', };
Some useful Dart notes and Copy-Pastes from Dartlang.org. And some Hard-Spots of language questions.
Tuesday, November 7, 2017
Dawo 0.0.5 Connector, version 1, inspirational ideas for learning.
Labels:
dawo
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment