Top Banner
FF 12: Clients A presentation by Robin Upton (2009-10-16) Latest version at www.altruists.org/ff12 Attribution – NonCommercial - ShareAlike www.altruists.org V1.0.0 http://www.altruists.org/ff11 Recommended Pre-requisite: FF11: Hooks
17

FF 12 : Clients A presentation by Robin Upton (2009-10-16) Latest version at Attribution – NonCommercial - ShareAlike .

Dec 14, 2015

Download

Documents

Imogen Snow
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: FF 12 : Clients A presentation by Robin Upton (2009-10-16)  Latest version at  Attribution – NonCommercial - ShareAlike .

FF 12: Clients

A presentation by Robin Upton (2009-10-16)Latest version at www.altruists.org/ff12

Attribution – NonCommercial - ShareAlikewww.altruists.org

V1.0.0

http://www.altruists.org/ff11

Recommended Pre-requisite: FF11: Hooks

Page 2: FF 12 : Clients A presentation by Robin Upton (2009-10-16)  Latest version at  Attribution – NonCommercial - ShareAlike .

What is an F2F Client?

An F2F client is a piece of software designed as an interface for an F2F server.

This presentation details the default F2F client (coded in JS), to help developers of the other clients maintain compatibility.

HTTP(S)

If they communicate over the internet, HTTPS should be used.

F2F F2F ServerServer

F2F F2F ClientClient

Page 3: FF 12 : Clients A presentation by Robin Upton (2009-10-16)  Latest version at  Attribution – NonCommercial - ShareAlike .

F2F F2F ClientClient

F2F F2F ServerServer

Communication

Clients are connected to only one server at a time.The client uses AJAX to exchange the

XML messages detailed in /FF8.

Messages in either direction are wrapped in a <comm>:

http://www.altruists.org/ff8

<comm><message .../>...<message .../>

</comm>

Page 4: FF 12 : Clients A presentation by Robin Upton (2009-10-16)  Latest version at  Attribution – NonCommercial - ShareAlike .

DOM Sections

F2F Clients keep data in separate sections:

The client has 4 other, less important, sections: clipboard, drag-drop, event-log, traffic-log

ClientsideServerside

semantic(XML)

display(XHTML)

CalculationData

(Invisible)

User Interaction(Visible)

Oth

er F2F

So

ft- System

s

hooks/render`

User input

Page 5: FF 12 : Clients A presentation by Robin Upton (2009-10-16)  Latest version at  Attribution – NonCommercial - ShareAlike .

F2F Processing Overviewsemantic (XML) display (XHTML)server (XML)

<servicereq>

<clientreq>

<hookreq>

<displayreq>

Sent to server

Sent to server

XSLT, datastores & communications

XSLby namespace

XSLby namespace

XSLTby namespace

JS DOM manipulation

JSDOM manipulation

Sent to client

no processing JS operations &XSL transforms

no processing

no processing SVG imagesno processing<imagereq>

Request:

ClientsideServerside

<scriptreq> replaced by chunk of XML

replaced by chunk of XML

replaced by chunk of XML

Page 6: FF 12 : Clients A presentation by Robin Upton (2009-10-16)  Latest version at  Attribution – NonCommercial - ShareAlike .

<clientreq>

All requests send to the client are <clientreq>s.

http://www.altruists.org/ff8

The JS client supports:

thread-add, thread-edit, thread-deleteManaging Windows:

<clientreq function=”http://friend2friend.net/client/thread-add”/>

Miscellaneous:

Since they are hardcoded, each client has a fixed set.

alert, clipboard-clear, data-input, js-value-set, packet, param-set,receive, send

(This list is not yet fixed)

Page 7: FF 12 : Clients A presentation by Robin Upton (2009-10-16)  Latest version at  Attribution – NonCommercial - ShareAlike .

<imagereq>

Clients process an <imagereq> by requesting this resource by URI from their F2F soft-system:

http://www.altruists.org/ff11

<svg:svg>

ClientClient Soft-Soft-systemsystem

<svg:svg>

uri src

<imagereq function=”http://f2f.name/images/1” x=”24” y=”24”/>

The server returns a Scalable Vector Graphic (SVG) image, which is scaled as requested and included in the displayDOM.

Page 8: FF 12 : Clients A presentation by Robin Upton (2009-10-16)  Latest version at  Attribution – NonCommercial - ShareAlike .

<displayreq>

Clients process a <displayreq> by requesting this resource by URI from their F2F soft-system:

<displayreq function=”http://f2f.name/displays/etc”>...optional XML...

</displayreq>

ClientClientSoft-Soft-

systemsystem

uri src

The server returns an XSL stylesheet,which is applied to the <displayreq> item.

Page 9: FF 12 : Clients A presentation by Robin Upton (2009-10-16)  Latest version at  Attribution – NonCommercial - ShareAlike .

<hookreq>

Clients process a <hookreq> by requesting a list of handlers for this resource from their F2F soft-system:

The client picks <handler>(s) according to the namespace of the data

<hookreq function=”uri”>...XML element(s) required...</hookreq>

<handl

er>

<ha<h

ClientClientSoft-Soft-

systemsystem

hook uri src

handler-list

ClientClientSoft-Soft-

systemsystem

handler uri src

XSL handler

<handler>

Handlers are XSL transforms, which are applied to the contained data.

Page 10: FF 12 : Clients A presentation by Robin Upton (2009-10-16)  Latest version at  Attribution – NonCommercial - ShareAlike .

<scriptreq>

Clients process a <scriptreq> by requesting the corresponding XML script from their F2F soft-system:

<scriptreq function=”http://f2f.name/scripts/etc”/>

ClientClientSoft-systemSoft-system

uri src

This XMLreplaces the <scriptreq>.

Some XML

Page 11: FF 12 : Clients A presentation by Robin Upton (2009-10-16)  Latest version at  Attribution – NonCommercial - ShareAlike .

<servicereq>

Clients send a <servicereq> for processing at their F2F soft-system.

http://www.altruists.org/ff11

ClientClient Soft-Soft-systemsystem

<servicereq>...

<servicereq function=”http://f2f.name/some-service”>...

If marked this-return=“0”, the servicereq is then discarded,otherwise, it is kept as a placeholder for the returning data.

(XML results)

Page 12: FF 12 : Clients A presentation by Robin Upton (2009-10-16)  Latest version at  Attribution – NonCommercial - ShareAlike .

Clientside <servicereq> processing

When clients have sent a <servicereq> to their F2F soft-system...

...if marked this-return=“0”, the servicereq is discarded;

...else if marked this-render=“suspend”, no rendering is carried out until a response is received;

...else rendering continues as usual.

http://friend2friend.net/modules/dev/data-validator...

<servicereq xmlns="http://friend2friend.net/" function="http://friend2friend.net/modules/desktop/add”>

The render hook creates a visual display of the servicereq:

Page 13: FF 12 : Clients A presentation by Robin Upton (2009-10-16)  Latest version at  Attribution – NonCommercial - ShareAlike .

F2F Client Address Hierarchy

F2F client addresses locate the soft system they are connected to:

The particular service request is indicated by request:

server = ”http://f2f.example.com”

system = ”default”

request = ”23”

The thread attribute holds the security context and window id

thread = ”4.1”

The node attribute defines the DOM section {semantic,display}:

node = ”semantic”

The context differentiates them from the server (and one another):

context= ”client-123”

Page 14: FF 12 : Clients A presentation by Robin Upton (2009-10-16)  Latest version at  Attribution – NonCommercial - ShareAlike .

Receiving Incoming Messages

http://www.altruists.org/ff8

To motivate descriptive terms for messages, we use a metaphor:- Assume the highest point of a communication is always its source.

Downstream messages arrive unsolicited:(type= “down”, “send”, “send2”)

Upstream messages are replies to earlier downstream messages:(type= “term”, “return”)

The <message>s of a <comm>are processed separately, currently in order, though this policy may later be dropped.

Page 15: FF 12 : Clients A presentation by Robin Upton (2009-10-16)  Latest version at  Attribution – NonCommercial - ShareAlike .

Receiving Upstream Messages (Replies)

Messages of type “term” or “return” are replies (upstream), and need node, thread & sreq attributes to specify the originating call.

If these correspond to a waiting <servicereq>, the incoming data is added below (“return”) or used to replace (“term”) it,

causing the affected thread to be re-rendered.

Otherwise, the message is ignored.(Possibly a warning should be issued).

Page 16: FF 12 : Clients A presentation by Robin Upton (2009-10-16)  Latest version at  Attribution – NonCommercial - ShareAlike .

Receiving Downstream Messages

Messages of type “down” are new requests from the server. Therefore, they need no thread, node or request attributes.

These messages may only have <clientreq> children,which are processed in serial order by the client.

Other content is ignored (probably with a warning).

Page 17: FF 12 : Clients A presentation by Robin Upton (2009-10-16)  Latest version at  Attribution – NonCommercial - ShareAlike .

Summary

Recommended Follow-up: FF13: Modules

http://www.altruists.org/ff13

F2F clients are graphical interfaces to F2F servers.

F2F F2F ServerServer

F2F F2F ClientClient

The Semantic (XML) & Display (HTML) sections are separate.

The client understands a range of request items.

servicereq

displayreqimagereq

hookreq

scriptreq

clientreq