Esempio n. 1
0
def EventServerClients(rhost, rport, backplane="WHITEBOARD"):
        # plug a TCPClient into the backplae
        from Kamaelia.Internet.TCPClient import TCPClient

        loadingmsg = "Fetching sketch from server..."

        return pipeline( subscribeTo(backplane),
                         TagAndFilterWrapper(
                         Graphline( GETIMG = OneShot(msg=[["GETIMG"]]),
                                    PIPE = pipeline(
                                            tokenlists_to_lines(),
                                            TCPClient(host=rhost,port=rport),
                                            chunks_to_lines(),
                                            lines_to_tokenlists(),
                                        ),
                                    BLACKOUT = OneShot(msg=[["CLEAR",0,0,0],["WRITE",100,100,24,255,255,255,loadingmsg]]),
                                    linkages = { ("self","inbox") : ("PIPE","inbox"),
                                                 ("self","control") : ("PIPE","control"),
                                                 ("PIPE","outbox") : ("self","outbox"),
                                                 ("PIPE","signal") : ("self","signal"),
                                                 ("GETIMG","outbox") : ("PIPE","inbox"),
                                                 ("BLACKOUT","outbox") : ("self","outbox"),
                                               },
                                  )
                         ),
                         publishTo(backplane),
                       ) #.activate()
Esempio n. 2
0
def EventServerClients(rhost, rport, backplane="WHITEBOARD"):
    # plug a TCPClient into the backplae
    from Kamaelia.Internet.TCPClient import TCPClient

    loadingmsg = "Fetching sketch from server..."

    return Pipeline(
        subscribeTo(backplane),
        TagAndFilterWrapper(
            Graphline(
                GETIMG=OneShot(msg=[["GETIMG"]]),
                PIPE=Pipeline(
                    tokenlists_to_lines(),
                    TCPClient(host=rhost, port=rport),
                    chunks_to_lines(),
                    lines_to_tokenlists(),
                ),
                BLACKOUT=OneShot(
                    msg=[["CLEAR", 0, 0, 0],
                         ["WRITE", 100, 100, 24, 255, 255, 255, loadingmsg]]),
                linkages={
                    ("self", "inbox"): ("PIPE", "inbox"),
                    ("self", "control"): ("PIPE", "control"),
                    ("PIPE", "outbox"): ("self", "outbox"),
                    ("PIPE", "signal"): ("self", "signal"),
                    ("GETIMG", "outbox"): ("PIPE", "inbox"),
                    ("BLACKOUT", "outbox"): ("self", "outbox"),
                },
            )),
        publishTo(backplane),
    )  #.activate()
Esempio n. 3
0
 def clientconnector():
     return Pipeline(
         chunks_to_lines(),
         lines_to_tokenlists(),
         FilterAndTagWrapper(
             Pipeline(
                 publishTo(backplane),
                 # well, should be to separate pipelines, this is lazier!
                 subscribeTo(backplane),
             )),
         tokenlists_to_lines(),
     )
Esempio n. 4
0
 def clientconnector():
     return pipeline(
         chunks_to_lines(),
         lines_to_tokenlists(),
         FilterAndTagWrapper(
             pipeline( publishTo(backplane),
                         # well, should be to separate pipelines, this is lazier!
                       subscribeTo(backplane),
                     )
             ),
         tokenlists_to_lines(),
         )
Esempio n. 5
0
    def clientconnector():
        return Pipeline(
            chunks_to_lines(),
            lines_to_tokenlists(),
            Graphline(
                WHITEBOARD=FilterAndTagWrapper(
                    Pipeline(
                        publishTo(whiteboardBackplane),
                        # well, should be to separate pipelines, this is lazier!
                        subscribeTo(whiteboardBackplane),
                    )),
                AUDIO=Pipeline(
                    SimpleDetupler(1),  # remove 'SOUND' tag
                    SpeexDecode(3),
                    FilterAndTagWrapperKeepingTag(
                        Pipeline(
                            publishTo(audioBackplane),
                            # well, should be to separate pipelines, this is lazier!
                            subscribeTo(audioBackplane),
                        ), ),
                    RawAudioMixer(),
                    SpeexEncode(3),
                    Entuple(prefix=["SOUND"], postfix=[]),
                ),
                ROUTER=Router(
                    ((lambda tuple: tuple[0] == "SOUND"), "audio"),
                    ((lambda tuple: tuple[0] != "SOUND"), "whiteboard"),
                ),
                linkages={
                    # incoming messages go to a router
                    ("", "inbox"): ("ROUTER", "inbox"),

                    # distribute messages to appropriate destinations
                    ("ROUTER", "audio"): ("AUDIO", "inbox"),
                    ("ROUTER", "whiteboard"): ("WHITEBOARD", "inbox"),

                    # aggregate all output
                    ("AUDIO", "outbox"): ("", "outbox"),
                    ("WHITEBOARD", "outbox"): ("", "outbox"),

                    # shutdown routing, not sure if this will actually work, but hey!
                    ("", "control"): ("ROUTER", "control"),
                    ("ROUTER", "signal"): ("AUDIO", "control"),
                    ("AUDIO", "signal"): ("WHITEBOARD", "control"),
                    ("WHITEBOARD", "signal"): ("", "signal")
                },
            ),
            tokenlists_to_lines(),
        )
Esempio n. 6
0
 def clientconnector():
     return Pipeline(
         chunks_to_lines(),
         lines_to_tokenlists(),
         Graphline(
             WHITEBOARD = FilterAndTagWrapper(
                 Pipeline( publishTo(whiteboardBackplane),
                           # well, should be to separate pipelines, this is lazier!
                           subscribeTo(whiteboardBackplane),
                         )),
             AUDIO = Pipeline(
                 SimpleDetupler(1),     # remove 'SOUND' tag
                 SpeexDecode(3),
                 FilterAndTagWrapperKeepingTag(
                     Pipeline( publishTo(audioBackplane),
                                 # well, should be to separate pipelines, this is lazier!
                             subscribeTo(audioBackplane),
                             ),
                     ),
                 RawAudioMixer(),
                 SpeexEncode(3),
                 Entuple(prefix=["SOUND"],postfix=[]),
                 ),
             ROUTER = Router( ((lambda tuple : tuple[0]=="SOUND"), "audio"),
                              ((lambda tuple : tuple[0]!="SOUND"), "whiteboard"),
                            ),
             linkages = {
                 # incoming messages go to a router
                 ("", "inbox") : ("ROUTER", "inbox"),
                 
                 # distribute messages to appropriate destinations
                 ("ROUTER",      "audio") : ("AUDIO",      "inbox"),
                 ("ROUTER", "whiteboard") : ("WHITEBOARD", "inbox"),
                 
                 # aggregate all output
                 ("AUDIO",      "outbox") : ("", "outbox"),
                 ("WHITEBOARD", "outbox") : ("", "outbox"),
                 
                 # shutdown routing, not sure if this will actually work, but hey!
                 ("", "control") : ("ROUTER", "control"),
                 ("ROUTER", "signal") : ("AUDIO", "control"),
                 ("AUDIO", "signal") : ("WHITEBOARD", "control"),
                 ("WHITEBOARD", "signal") : ("", "signal")
                 },
             ),
         tokenlists_to_lines(),
         )
Esempio n. 7
0
        mode = sys.argv[1].lower().strip()

        assert (mode == "play" or mode == "record")
        filename = sys.argv[2]
        rhost = sys.argv[3]
        rport = int(sys.argv[4])
    except:
        sys.stderr.write(
            "Usage:\n    ./WhiteboardClerk play|record filename host port\n\n")
        sys.exit(1)

    if mode == "record":
        print "Recording..."
        pipeline(
            OneShot(msg=[["GETIMG"]]),
            tokenlists_to_lines(),
            TCPClient(host=rhost, port=rport),
            chunks_to_lines(),
            Timestamp(),
            IntersperseNewlines(),
            SimpleFileWriter(filename),
        ).run()

    elif mode == "play":
        print "Playing..."
        pipeline(
            Graphline(
                FILEREADER=PromptedFileReader(filename, "lines"),
                DETIMESTAMP=DeTimestamp(),
                linkages={
                    # data from file gets detimestamped and sent on
Esempio n. 8
0
def EventServerClients(rhost,
                       rport,
                       whiteboardBackplane="WHITEBOARD",
                       audioBackplane="AUDIO"):
    # plug a TCPClient into the backplae
    from Kamaelia.Internet.TCPClient import TCPClient
    from Kamaelia.Chassis.Carousel import Carousel

    loadingmsg = "Fetching sketch from server..."

    failuremsg = "FAILED: Couldn't connect to server:"
    failuremsg2 = str(rhost) + " on port " + str(rport)

    return Graphline(
        NETWORK=Graphline(
            PIPE=Pipeline(
                tokenlists_to_lines(),
                TCPClient(host=rhost, port=rport),
                chunks_to_lines(),
                lines_to_tokenlists(),
            ),
            SHUTDOWN=TriggeredOneShot(msg=shutdownMicroprocess()),
            linkages={
                ("", "inbox"): ("PIPE", "inbox"),
                ("PIPE", "outbox"): ("", "outbox"),

                # shutdown stuff - TCPClient may have caused it, so need to
                # loop the shutdown message back round to the front of the pipe
                # as well as propagating it onwards
                ("", "control"): ("PIPE", "control"),
                ("PIPE", "signal"): ("SHUTDOWN", "inbox"),
                ("SHUTDOWN", "outbox"): ("PIPE", "control"),
                ("SHUTDOWN", "signal"): ("", "signal"),
            }),
        ROUTER=Router(
            ((lambda tuple: tuple[0] == "SOUND"), "audio"),
            ((lambda tuple: tuple[0] != "SOUND"), "whiteboard"),
        ),
        WHITEBOARD=FilterAndTagWrapper(
            Pipeline(
                publishTo(whiteboardBackplane),
                #
                subscribeTo(whiteboardBackplane),
            )),
        AUDIO=Pipeline(
            SimpleDetupler(1),  # remove 'SOUND' tag
            SpeexDecode(3),
            FilterAndTagWrapperKeepingTag(
                Pipeline(
                    publishTo(audioBackplane),
                    #
                    subscribeTo(audioBackplane),
                ), ),
            RawAudioMixer(),
            SpeexEncode(3),
            Entuple(prefix=["SOUND"], postfix=[]),
        ),
        GETIMG=OneShot(msg=[["GETIMG"]]),
        BLACKOUT=OneShot(
            msg=[["CLEAR", 0, 0, 0],
                 ["WRITE", 100, 100, 24, 255, 255, 255, loadingmsg]]),
        FAILURE=TriggeredOneShot(
            msg=[["WRITE", 100, 200, 32, 255, 96, 96, failuremsg],
                 ["WRITE", 100, 232, 24, 255, 160, 160, failuremsg2]]),
        linkages={
            # incoming messages from network connection go to a router
            ("NETWORK", "outbox"): ("ROUTER", "inbox"),

            # distribute messages to appropriate destinations
            ("ROUTER", "audio"): ("AUDIO", "inbox"),
            ("ROUTER", "whiteboard"): ("WHITEBOARD", "inbox"),

            # aggregate all output, and send across the network connection
            ("AUDIO", "outbox"): ("NETWORK", "inbox"),
            ("WHITEBOARD", "outbox"): ("NETWORK", "inbox"),

            # initial messages sent to the server, and the local whiteboard
            ("GETIMG", "outbox"): ("NETWORK", "inbox"),
            ("BLACKOUT", "outbox"): ("WHITEBOARD", "inbox"),

            # shutdown routing, not sure if this will actually work, but hey!
            ("NETWORK", "signal"): ("FAILURE", "inbox"),
            ("FAILURE", "outbox"): ("WHITEBOARD", "inbox"),
            ("FAILURE", "signal"): ("ROUTER", "control"),
            ("ROUTER", "signal"): ("AUDIO", "control"),
            ("AUDIO", "signal"): ("WHITEBOARD", "control"),
            ("WHITEBOARD", "signal"): ("", "signal"),
        })
Esempio n. 9
0
            sys.exit(0)
        mode = sys.argv[1].lower().strip()

        assert(mode=="play" or mode=="record")
        filename = sys.argv[2]
        rhost = sys.argv[3]
        rport = int(sys.argv[4])
    except:
        sys.stderr.write("Usage:\n    ./WhiteboardClerk play|record filename host port\n\n")
        sys.exit(1)

    if mode == "record":
        print "Recording..."
        pipeline(
            OneShot(msg=[["GETIMG"]]),
            tokenlists_to_lines(),
            TCPClient(host=rhost, port=rport),
            chunks_to_lines(),
            Timestamp(),
            IntersperseNewlines(),
            SimpleFileWriter(filename),
        ).run()
        
    elif mode == "play":
        print "Playing..."
        pipeline(
            Graphline(
                FILEREADER  = PromptedFileReader(filename, "lines"),
                DETIMESTAMP = DeTimestamp(),
                linkages = {
                    # data from file gets detimestamped and sent on
Esempio n. 10
0
def EventServerClients(rhost, rport, whiteboardBackplane="WHITEBOARD", audioBackplane="AUDIO"):
        # plug a TCPClient into the backplae
        from Kamaelia.Internet.TCPClient import TCPClient
        from Kamaelia.Chassis.Carousel import Carousel

        loadingmsg = "Fetching sketch from server..."
        
        failuremsg  = "FAILED: Couldn't connect to server:"
        failuremsg2 = str(rhost)+" on port "+str(rport)

        return Graphline(
                NETWORK = Graphline(
                    PIPE = Pipeline(
                        tokenlists_to_lines(),
                        TCPClient(host=rhost,port=rport),
                        chunks_to_lines(),
                        lines_to_tokenlists(),
                        ),
                    SHUTDOWN = TriggeredOneShot(msg=shutdownMicroprocess()),
                    linkages = {
                        ("",     "inbox")  : ("PIPE", "inbox"),
                        ("PIPE", "outbox") : ("", "outbox"),
                        
                        # shutdown stuff - TCPClient may have caused it, so need to
                        # loop the shutdown message back round to the front of the pipe
                        # as well as propagating it onwards
                        ("",         "control") : ("PIPE",     "control"),
                        ("PIPE",     "signal")  : ("SHUTDOWN", "inbox"),
                        ("SHUTDOWN", "outbox")  : ("PIPE",     "control"),
                        ("SHUTDOWN", "signal")  : ("",         "signal"),
                    }
                ),
                ROUTER = Router( ((lambda tuple : tuple[0]=="SOUND"), "audio"),
                                 ((lambda tuple : tuple[0]!="SOUND"), "whiteboard"),
                               ),
                WHITEBOARD = FilterAndTagWrapper(
                    Pipeline(
                        publishTo(whiteboardBackplane),
                        #
                        subscribeTo(whiteboardBackplane),
                    )
                ),
                AUDIO = Pipeline(
                    SimpleDetupler(1),     # remove 'SOUND' tag
                    SpeexDecode(3),
                    FilterAndTagWrapperKeepingTag(
                        Pipeline(
                            publishTo(audioBackplane),
                            #
                            subscribeTo(audioBackplane),
                        ),
                    ),
                    RawAudioMixer(),
                    SpeexEncode(3),
                    Entuple(prefix=["SOUND"],postfix=[]),
                ),
                GETIMG = OneShot(msg=[["GETIMG"]]),
                BLACKOUT = OneShot(msg=[["CLEAR",0,0,0],["WRITE",100,100,24,255,255,255,loadingmsg]]),
                FAILURE = TriggeredOneShot(msg=[["WRITE", 100,200, 32, 255, 96, 96, failuremsg],
                                                ["WRITE", 100,232, 24, 255,160,160, failuremsg2]]), 
                
                linkages = {
                    # incoming messages from network connection go to a router
                    ("NETWORK", "outbox") : ("ROUTER", "inbox"),
                    
                    # distribute messages to appropriate destinations
                    ("ROUTER", "audio")      : ("AUDIO",      "inbox"),
                    ("ROUTER", "whiteboard") : ("WHITEBOARD", "inbox"),
                    
                    # aggregate all output, and send across the network connection
                    ("AUDIO",      "outbox") : ("NETWORK", "inbox"),
                    ("WHITEBOARD", "outbox") : ("NETWORK", "inbox"),
                    
                    # initial messages sent to the server, and the local whiteboard
                    ("GETIMG",   "outbox") : ("NETWORK",    "inbox"),
                    ("BLACKOUT", "outbox") : ("WHITEBOARD", "inbox"),
                    
                    # shutdown routing, not sure if this will actually work, but hey!
                    ("NETWORK", "signal") : ("FAILURE", "inbox"),
                    ("FAILURE", "outbox") : ("WHITEBOARD", "inbox"),
                    ("FAILURE",    "signal") : ("ROUTER",     "control"),
                    ("ROUTER",     "signal") : ("AUDIO",      "control"),
                    ("AUDIO",      "signal") : ("WHITEBOARD", "control"),
                    ("WHITEBOARD", "signal") : ("",           "signal"),
                }
            )