--
You received this message because you are subscribed to the Google Groups "Flow Based Programming" group.
To unsubscribe from this group and stop receiving emails from it, send an email to flow-based-programming+unsub...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Basically we'll have a named data network router implemented in fractalide and it exposes one input array port and one output array port. The idea is that a bunch of business logic components that need to get data from the network can just use names and not bother about routing, ip address, socket connection, retries and all that. These names are sent via a simple port into one element of the array input port of the ndn router. That way we have a very simple reusable interface that can accept as many incoming information packets from many different components (as long as they speak the same cap'n proto contract). The use of ndn in a microservice setup makes for much easier networking, as the networking is entirely folded away and only names are exposed.
It was a contrived example to illustrate the concept of a simple port feeding an element of an array port.
Our IIPs are more complex!
'${maths_boolean}:(boolean=true)' => a nand(${maths_boolean_nand})
'${maths_boolean}:(boolean=true)' => b nand()
Is a taste of our contract IIPs.
--
You received this message because you are subscribed to the Google Groups "Flow Based Programming" group.
To unsubscribe from this group and stop receiving emails from it, send an email to flow-based-programming+unsubscri...@googlegroups.com.
I can sort of see virtual ports - two of my implementations (JavaFBP and C#FBP) support subnet external names - this sounds pretty close! Did you want to expand on the idea of virtual ports?
Your IIPs look interesting - but I get worried whenever I see processes like NAND as it seems the wrong level of granularity. IMO FBP should be concerned with structured objects, rather than scalars - the latter being more the concern of procedural code. However your next post sounds more like the level of granularity I am comfortable with, and actually sounds very promising! So I assume the NAND example was just to show the syntax!
A, B and C are processes executing code components. O1, O2, and the two INs are ports connecting the connections M and N to their respective processes. ... M and N are what are often referred to as "bounded buffers", and have a fixed capacity in terms of the number of IPs that they can hold at any point in time.
Collate has an array-type input port called N. The two Read components both have a simple output port called IN.
So this gives you two connections:
which is exactly the same as:
simple_virtual_input_port => input do_nothing(${pass_through}) output -> array[1] comp()
is allowed in Fractalide.
Does this make it clear?
--
You received this message because you are subscribed to the Google Groups "Flow Based Programming" group.
To unsubscribe from this group and stop receiving emails from it, send an email to flow-based-programming+unsub...@googlegroups.com.
I see, so "Simple Input" is not a component but a input port to a subnet?
connect_to_array(&self, comp_out: String, port_out: String, comp_in: String, port_in: String, selection_in: String)
Hi Stewart,
In the signatureconnect_to_array(&self, comp_out: String, port_out: String, comp_in: String, port_in: String, selection_in: String)
What is the semantics of "selection_in"? If you are selecting on the contents of the packets being sent, what happens to rejected packets? This also seems to assume that the contents of the packets are always strings - I can see this as useful between systems, or independent applications, but it seems unnecessarily restrictive within an application.
Do I deduce that you have different "connect" statements - if so, I am not sure why, esp. since there doesn't seem to be a separate (input or output) port element parameter - in "classical" FBP, you just connect, e.g.
COMP1 OUT[1] -> IN[0] COMP2...
or in JavaFBP
connect(component("Read Details"), port("OUT"), component("Collate"), port("IN[1]"));
We get further simplification by allowing [0] to be omitted, as the component knows whether the port is an array port or not..
--
You received this message because you are subscribed to the Google Groups "Flow Based Programming" group.
To unsubscribe from this group and stop receiving emails from it, send an email to flow-based-programming+unsub...@googlegroups.com.
Rather than having a separate parameter, I would suggest a notation like: port_out: [String, String] where the first string is the port name, and the second is the index, or even just use some notation like portname[index], which just means square brackets cannot be part of the port name. This means you don't have to have different flavours of 'connect'.
I'm afraid I have no idea what the section starting 'We lift out...' - can you rephrase that?