1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 import os
19 import gst
20
21 from flumotion.component import feedcomponent
22 from flumotion.common import log, messages, errors
23 from twisted.internet.protocol import ServerFactory, Protocol
24 from twisted.internet import defer, reactor
25
26 __version__ = "$Rev$"
27
28
29
30
31
33 """ Dumb Protocol, doesn't do anything """
34
44
45
46
47
48
49 -class UnixDomainDumbFactory(ServerFactory):
50
51 protocol = DumbProtocol
52
53 - def __init__(self, component):
55
56
57
58
59 -class UnixDomainProvider(feedcomponent.ParseLaunchComponent):
60
62 self.factory = None
63 self.socketPath = None
64 self.currentTransport = None
65
66 - def setUnixTransport(self, transport):
67 self.debug("got transport %r [fd:%d]" % (
68 transport, transport.fileno()))
69 self.currentTransport = transport
70
71
72 fdsrc = self.pipeline.get_by_name("fdsrc")
73 fdsrc.props.fd = transport.fileno()
74
75
76
77
78 self.link()
79
80 - def get_pipeline_string(self, properties):
81 """ return the pipeline """
82 return 'fdsrc name=fdsrc ! gdpdepay'
83
85 props = self.config['properties']
86 self.socketPath = props.get('path')
87 self.factory = UnixDomainDumbFactory(self)
88
89
90 self.pipeline.set_state(gst.STATE_READY)
91
92
93 if os.path.exists(self.socketPath):
94 os.unlink(self.socketPath)
95
96 self.log("Starting to listen on UNIX : %s" % self.socketPath)
97 reactor.listenUNIX(self.socketPath, self.factory)
98
99