
	EntityCollorator

---------------------------------------------
author: Takashi Kasuya (kasuya@sfc.keio.ac.jp)
date: 2006/12/28


Rec
PDpbP[W\
QDTv
RDCXg[
SDs
TDݒt@C
UDAvP[V
VDvOCɂg


PDpbP[W\
---------------------------------------------------------------------------
- README.txt	:@̃t@C
- lib			:@ˑjart@CQ
- src           :@\[Xt@C
- bin			:@NXt@C
- doc			: Javadoc
- config        :@ݒt@CQ
- build.xml		: Antrht@C
- html			: WebT[oɂQƂÓI\[Xu
- plugin		: PluginutH_
- start.bat		:@WindowspNt@C


QDTv
--------------------------------------------------------------------------
EntityCollaboratorSIP(Session Initiation Protocol)obNGhɗplbg[N^̃AvP[V̂߂̃t[[NłB
SIP𗘗p邱ƂɂăCxgȂǂ̗UIȏ񂾂łȂA}`fBAȂǂ̘AIȏeՂɈƂł܂B
ȓ͈ȉłB

ESIP(Session Initiation Protocol)
EC^tF[XVvŊJe
EAvP[V̊geՂɂȂ
EWebƃV[XɘAgiWebT[o, AJAX, FLASHAvP[VȂǂƂ̘Ag\j
Ef[^x[XƃV[XɘAg
EVAʐMeՂɃCxg̎擾ł
EvOC`ŃCxg̔MAM𐧌䂷vgRǉł
EʒuƘA
EXP[uȃA[LeN`iDHTɂ郋[eBO\j
ȂǂȂ

AvP[VEntityContainerƌĂ΂Rei̕ێEntityƌĂ΂m[hAg邱Ƃō\܂B
EntityContainer͖؍\ŊǗAlbg[NɕU邱Ƃ\łÃobNGh͑SSIPōsĂ܂B
܂AEntityCollaboratorpăAvP[V\ĂƁA̋@\ǉύXeՂł邱Ƃ傫ȓɂȂĂ܂B


RDCXg[
---------------------------------------------------------------------------
EntityCollaboratorJavaŎĂ܂B̂Java̎sKvɂȂ܂BȂA{\tgEFAJava1.5ȍ~œ삵܂B
܂AJavadoc̐AntɂsƂł܂BAntCXg[[ant javadoc]ɂ萶sĂB
f[^x[Xgpꍇ͕ʓrJDBCjart@CNXpXɉKv܂B
ȂAf[^x[XH2ł̓̂݌؍ς݂łBAPostGISւ̑Ή\肵Ă܂B


SDs
---------------------------------------------------------------------------
R}hC
java jp.ac.naka.ec.Main
Ƃ邱ƂŎs܂BȂANXpXlibȉjart@CĂ邱ƂKvɂȂ܂B
Nconfigȉ̐ݒt@CAplugintH_ȉ̃vOCIɓǂݍŁAAvP[VN܂B
Windows̏ꍇAstart.batNΎIɋN܂B


TDݒt@C
---------------------------------------------------------------------------
EntityCollaborator̓ɂconfigȉ̂T̐ݒt@CKvłB

	config ---- container.properties
			|
			|-- entity.xml
			|
			|-- sip.properties
			|
			|-- jmf.properties
			|
			|-- log4j.properties
			

TDP@container.properties
ȉ̂S̃ZNVɕĂ܂B

PDRei̐ݒ
	EntityContainerŗpSIPp̃|[g̎wƁAem[h݂ꍇAem[hSIP URIݒ肵܂B
		parent_uri	:em[hURI
		port		:SIP|[g
		
QDgp
	ݍ蒆łB
	
RDʒu̐ݒ
	g̈ʒuʒû̖ƈܓxAoxݒ肵܂B
		location	Fʒu
		latitude	Fܓx
		longitude	Fox
	
SDf[^x[Xݒ
	JDBC̐ݒBh2̂ݓmFBPostGIS̗p\B
		use_database		Ff[^x[Xp邩iYES or NO, ftHgNOj
		db_user=sa			Ff[^x[X̃[U 
		jdbc_driver_class	FgpJDBC̃NX
		jdbc_address		F쒆̃f[^x[X̃AhX
		db_password			FpX[h
		db_catalog_name		Fgpf[^x[X̃J^O

TDQ@entities.xml
EntityContainerێEntityXMLŋLq܂B
LqeidEntitẙSCA^CvƈʒułBDTD쐬B
^Cvjp.ac.naka.ec.entity.EntityTypeɋLqꂽełAȗSENSORƂȂ܂B
ȉ͋LqTvB
	
<?xml version="1.0" encoding="UTF-8"?>
<entities>
	<entity id="Button" class="jp.ac.naka.ec.entity.test.ButtonEntity">
		<type>SENSOR</type>
		<location name="shimokitazawa">
			<latitude>35.66479283857099</latitude>
			<longitude>139.67262268066406</longitude>
		</location>
	</entity>

	<entity id="Dumper" class="jp.ac.naka.ec.entity.test.RequestMethodDumper"/>		
</entities>

TDR@sip.properties
JAIN SIPX^bN̐ݒłBʏ͕ύX̕Kv͂܂BڍׂJAIN SIPAPIQƂĂB
http://snad.ncsl.nist.gov/proj/iptel/jain-sip-1.2/javadoc/


TDS@jmf.properties
ÃXg[~OsꍇAjmf.properties̐ݒ肪KvłB
ݒ荀ڂ͓ÂꂼgpfoCXAtH[}bgłBjp.ac.naka.ec.media.MediaTransmitterȂǂɔf܂B

ȉLqTvB

video_device_name=vfw:Microsoft WDM Image Capture (Win32):0
audio_device_name=DirectSoundCapture
video_capture_format=size=352x288, encoding=yuv, maxdatalength=152064
audio_capture_format=linear, 8000.0 hz, 8-bit, mono, unsigned

TDT@log4j.properties
Ô߂̐ݒBڍׂApache Log4j̃vWFNgQƂĂB
http://logging.apache.org/log4j/docs/


UDAvP[V
---------------------------------------------------------------------------
AvP[VEntityContainerێEntity邱Ƃɂč\܂B
Ƃ͋̓Iɂ̓Cxg̑MAfBAZbV̊mƃXg[~OłB
ێEntityAbstractEntityg邱Ƃō쐬Aentities.xmlɋLq邱ƂEntityContainerɕێ܂B
AbstractEntitysendMessageȂǂ̃CxgMׂ̈̃\bhAsendOfferƂfBAZbVmׂ̈̃\bhĂ܂B
܂AɑΉR[obN֐łreceiveMessage, receiveOfferƂ\bhĂÃ\bhpāAlbg[NʂẴbZ[WMXg[~Os܂B
AbstractEntitẙgNXinitreceiveMessage̓I[o[ChKv܂B
O҂͏ɌĂ΂郁\bhłA҂̓CxgMۂɌĂ΂܂B
ɂĂjp.ac.naka.ec.entity.testȉ̃\[XR[hQƂĂB

EbZ[WM
Cxg̑M⃁fBAZbV̂߂ɂ͂Đw肷Kv܂B
EntityCollaboratorł̓u[hLXgA}`LXgAjLXg\łiAfBAZbṼNGXg̓jLXĝ݁jB
u[hLXgsꍇAAbstractEntitỹ\bhłsendMessage(String str)p܂Bɓꂽ񂪃lbg[NɃu[hLXg܂B
}`LXgAjLXgs߂ɂ̓lbg[Nɑ݂EntityAEntityContainer̎QƂ擾Kv܂B
sendMessage܂sendOffer̈ɂ̎QƂnƂŃbZ[W𑗂邱Ƃo܂B
}`LXgs߂ɂ́AĐEntityContainerw肵܂B̎QƂ̎擾͈ȉ̂悤ɍs܂B

// Rei̎擾
EntityContainer con = getContainer();
// Rei̕ێQƂ擾
Set<Entity> set = con.getEntities();
SessionDescription sdp;
try {
	sdp = receiver.getRequestSessionDescription();
} catch (Exception e) {
	e.printStackTrace();
}
for (Entity entity : set) {
	// fBAZbV̑Olbg[N猟
	if (entity.getEntityType() == EntityType.MEDIA_TRANSMITTER && !entity.isLocal()) {
		// fBAZbVׂ̈̃NGXg
		sendOffer(sdp, entity);
		break;
	}
}


VDvOCɂg
EntityCollaboratorł͌SIP, HTTP, VA̓o͂T|[gĂ܂AvOCɂĂg邱Ƃo܂B
̓IɂXML-RPC̓o͂Ȃǂlł傤B
vOC̎gṕAvOCNX̍쐬̂ɁAplugintH_ȉɔCӖ̃tH_쐬A̒plugin.propertiesLqzu邱Ƃŉ\ɂȂ܂B
lbg[Nւ̃CxgzMsCxg\[X쐬邽߂ɂ́Ajp.ac.naka.ec.EventSourceg܂B
܂AzMꂽCxg擾ďsꍇjp.ac.naka.ec.entity.EntityListener̎s܂B
ڂ̎dplugin.properties̋Lqjp.ac.naka.ec.http.HttpCoreȂǂ̃\[Xt@CAplugintH_ȉ̋LqQlɂĂB
