Page Menu
Home
Xreate
Search
Configure Global Search
Log In
Docs
Questions
Repository
Issues
Patches
Internal API
Files
F2729747
thrift-example.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Fri, Mar 13, 10:45 AM
Size
14 KB
Mime Type
text/x-php
Expires
Sun, Mar 15, 10:45 AM (1 d, 18 h)
Engine
blob
Format
Raw Data
Handle
243152
Attached To
rXR Xreate
thrift-example.php
View Options
<?php
//require_once '/opt/libphutil/src/object/Phobject.php';
//require_once '/opt/libphutil/src/moduleutils/core.php';
//require_once '/opt/libphutil/src/moduleutils/PhutilBootloader.php';
//require_once '/opt/libphutil/src/moduleutils/PhutilBootloaderException.php';
//require_once '/opt/libphutil/src/moduleutils/PhutilLibraryConflictException.php';
//
////require "/opt/libphutil/src/__phutil_library_init__.php";
//
//require_once ("/opt/libphutil/src/utils/utils.php");
//require_once ("/opt/libphutil/src/xsprintf/csprintf.php");
//require_once ("/opt/libphutil/src/future/exec/execx.php");
//require_once ("/opt/libphutil/src/xsprintf/hgsprintf.php");
//require_once ("/opt/libphutil/src/markup/render.php");
//require_once ("/opt/libphutil/src/xsprintf/jsprintf.php");
//require_once ("/opt/libphutil/src/xsprintf/ldapsprintf.php");
//require_once ("/opt/libphutil/src/error/phlog.php");
//require_once ("/opt/libphutil/src/internationalization/pht.php");
//require_once ("/opt/libphutil/src/console/format.php");
//require_once ("/opt/libphutil/src/utils/viewutils.php");
//require_once ("/opt/libphutil/src/moduleutils/moduleutils.php");
//require_once ("/opt/libphutil/src/utils/utf8.php");
//require_once ("/opt/libphutil/src/xsprintf/pregsprintf.php");
//require_once ("/opt/libphutil/src/xsprintf/qsprintf.php");
//require_once ("/opt/libphutil/src/xsprintf/queryfx.php");
//require_once ("/opt/libphutil/src/xsprintf/tsprintf.php");
//require_once ("/opt/libphutil/src/xsprintf/urisprintf.php");
//require_once ("/opt/libphutil/src/parser/xhpast/parser_nodes.php");
//require_once ("/opt/libphutil/src/parser/xhpast/parser_tokens.php");
//require_once ("/opt/libphutil/src/xsprintf/xsprintf.php");
//require_once ("/opt/libphutil/src/filesystem/Filesystem.php");
//require_once ("/opt/libphutil/src/object/Phobject.php");
//require_once ("/opt/libphutil/src/filesystem/FileFinder.php");
//require_once ("/opt/libphutil/src/markup/PhutilMarkupEngine.php");
//require_once ("/opt/libphutil/src/markup/engine/PhutilRemarkupEngine.php");
//require_once ("/opt/libphutil/src/markup/engine/remarkup/markuprule/PhutilRemarkupRule.php");
//require_once ("/opt/libphutil/src/markup/engine/remarkup/markuprule/PhutilRemarkupEscapeRemarkupRule.php");
//require_once ("/opt/libphutil/src/markup/engine/remarkup/markuprule/PhutilRemarkupMonospaceRule.php");
//require_once ("/opt/libphutil/src/markup/engine/remarkup/markuprule/PhutilRemarkupDocumentLinkRule.php");
//require_once ("/opt/libphutil/src/markup/engine/remarkup/markuprule/PhutilRemarkupHyperlinkRule.php");
//require_once ("/opt/libphutil/src/markup/engine/remarkup/markuprule/PhutilRemarkupBoldRule.php");
//require_once ("/opt/libphutil/src/markup/engine/remarkup/markuprule/PhutilRemarkupItalicRule.php");
//require_once ("/opt/libphutil/src/markup/engine/remarkup/markuprule/PhutilRemarkupDelRule.php");
//require_once ("/opt/libphutil/src/markup/engine/remarkup/markuprule/PhutilRemarkupUnderlineRule.php");
//require_once ("/opt/libphutil/src/markup/engine/remarkup/markuprule/PhutilRemarkupHighlightRule.php");
//require_once ("/opt/libphutil/src/markup/engine/remarkup/blockrule/PhutilRemarkupBlockRule.php");
//require_once ("/opt/libphutil/src/markup/engine/remarkup/blockrule/PhutilRemarkupQuotesBlockRule.php");
//require_once ("/opt/libphutil/src/markup/engine/remarkup/blockrule/PhutilRemarkupReplyBlockRule.php");
//require_once ("/opt/libphutil/src/markup/engine/remarkup/blockrule/PhutilRemarkupHeaderBlockRule.php");
//require_once ("/opt/libphutil/src/markup/engine/remarkup/blockrule/PhutilRemarkupHorizontalRuleBlockRule.php");
//require_once ("/opt/libphutil/src/markup/engine/remarkup/blockrule/PhutilRemarkupCodeBlockRule.php");
//require_once ("/opt/libphutil/src/markup/engine/remarkup/blockrule/PhutilRemarkupLiteralBlockRule.php");
//require_once ("/opt/libphutil/src/markup/engine/remarkup/blockrule/PhutilRemarkupNoteBlockRule.php");
//require_once ("/opt/libphutil/src/markup/engine/remarkup/blockrule/PhutilRemarkupTableBlockRule.php");
//require_once ("/opt/libphutil/src/markup/engine/remarkup/blockrule/PhutilRemarkupSimpleTableBlockRule.php");
//require_once ("/opt/libphutil/src/markup/engine/remarkup/blockrule/PhutilRemarkupDefaultBlockRule.php");
//require_once ("/opt/libphutil/src/markup/engine/remarkup/blockrule/PhutilRemarkupListBlockRule.php");
//require_once ("/opt/libphutil/src/markup/engine/remarkup/blockrule/PhutilRemarkupInterpreterBlockRule.php");
//require_once ("/opt/libphutil/src/markup/engine/remarkup/PhutilRemarkupBlockStorage.php");
//require_once ("/opt/libphutil/src/markup/PhutilSafeHTML.php");
//require_once ("/opt/libphutil/src/internationalization/PhutilTranslator.php");
//require_once ("/opt/libphutil/src/parser/PhutilSimpleOptions.php");
//require_once ("/opt/libphutil/src/lexer/PhutilLexer.php");
//require_once ("/opt/libphutil/src/lexer/PhutilSimpleOptionsLexer.php");
//require_once ("/opt/libphutil/src/parser/PhutilLanguageGuesser.php");
//require_once ("/opt/libphutil/src/markup/syntax/engine/PhutilSyntaxHighlighterEngine.php");
//require_once ("/opt/libphutil/src/markup/syntax/engine/PhutilDefaultSyntaxHighlighterEngine.php");
//require_once ("/opt/libphutil/src/markup/syntax/highlighter/PhutilDefaultSyntaxHighlighter.php");
//require_once ("/opt/libphutil/src/future/Future.php");
//require_once ("/opt/libphutil/src/future/ImmediateFuture.php");
//require_once ("/opt/libphutil/src/parser/PhutilURI.php");
//require_once ("/opt/libphutil/src/symbols/PhutilSymbolLoader.php");
//require_once ("/opt/libphutil/src/symbols/PhutilClassMapQuery.php");
//require_once ("/opt/libphutil/src/markup/engine/remarkup/blockrule/PhutilRemarkupBlockInterpreter.php");
//require_once ("/opt/libphutil/src/markup/engine/remarkup/blockrule/PhutilRemarkupTestInterpreterRule.php");
//require_once ("/opt/libphutil/src/parser/xhpast/bin/PhutilXHPASTBinary.php");
//require_once ("/opt/libphutil/src/markup/syntax/highlighter/PhutilSyntaxHighlighter.php");
//require_once ("/opt/libphutil/src/markup/syntax/highlighter/PhutilLexerSyntaxHighlighter.php");
//require_once ("/opt/libphutil/src/lexer/PhutilPHPFragmentLexer.php");
//
//
//
//final class PhutilRemarkupEngineTestCase {
//
// public function testEngine() {
// $root = '/opt/libphutil/src/markup/engine/__tests__/remarkup/';
//
// $engine = $this->buildNewTestEngine();
// $actual_output = $engine->markupText("**duck quack**");
// echo $actual_output;
//
//
//// foreach (Filesystem::listDirectory($root, $hidden = false) as $file) {
//// echo $root.$file;
//// $contents = Filesystem::readFile($root.$file);
////
//// $result = "\n" . $this->markupText($root.$file);
//// echo $result;
//// }
//
// $result ="";
// return $result;
// }
//
// private function markupText($markup_file) {
// $contents = Filesystem::readFile($markup_file);
// $file = basename($markup_file);
//
// $parts = explode("\n~~~~~~~~~~\n", $contents);
//// $this->assertEqual(3, count($parts), $markup_file);
//
// list($input_remarkup, $expected_output, $expected_text) = $parts;
//
// $engine = $this->buildNewTestEngine();
//
// switch ($file) {
// case 'raw-escape.txt':
//
// // NOTE: Here, we want to test PhutilRemarkupEscapeRemarkupRule and
// // PhutilRemarkupBlockStorage, which are triggered by "\1". In the
// // test, "~" is used as a placeholder for "\1" since it's hard to type
// // "\1".
//
// $input_remarkup = str_replace('~', "\1", $input_remarkup);
// $expected_output = str_replace('~', "\1", $expected_output);
// $expected_text = str_replace('~', "\1", $expected_text);
// break;
// case 'toc.txt':
// $engine->setConfig('header.generate-toc', true);
// break;
// }
//
// $actual_output = (string)$engine->markupText($input_remarkup);
//
// switch ($file) {
// case 'toc.txt':
// $table_of_contents =
// PhutilRemarkupHeaderBlockRule::renderTableOfContents($engine);
// $actual_output = $table_of_contents."\n\n".$actual_output;
// break;
// }
//
//// $this->assertEqual(
//// $expected_output,
//// $actual_output,
//// pht("Failed to markup HTML in file '%s'.", $file));
//
// $engine->setMode(PhutilRemarkupEngine::MODE_TEXT);
// $actual_output = (string)$engine->markupText($input_remarkup);
//
// return $actual_output;
//// $this->assertEqual(
//// $expected_text,
//// $actual_output,
//// pht("Failed to markup text in file '%s'.", $file));
// }
//
// private function buildNewTestEngine() {
// echo "preprocess0";
// $engine = new PhutilRemarkupEngine();
// $engine->setConfig('uri.prefix', 'http://www.example.com/');
//
// $engine->setConfig(
// 'uri.allowed-protocols',
// array(
// 'http' => true,
// 'mailto' => true,
// 'tel' => true,
// ));
//
// echo "preprocess01";
// $rules = array();
// $rules[] = new PhutilRemarkupEscapeRemarkupRule();
// $rules[] = new PhutilRemarkupMonospaceRule();
// $rules[] = new PhutilRemarkupDocumentLinkRule();
// $rules[] = new PhutilRemarkupHyperlinkRule();
// $rules[] = new PhutilRemarkupBoldRule();
// $rules[] = new PhutilRemarkupItalicRule();
// $rules[] = new PhutilRemarkupDelRule();
// $rules[] = new PhutilRemarkupUnderlineRule();
// $rules[] = new PhutilRemarkupHighlightRule();
//
// echo "preprocess02";
// $blocks = array();
// $blocks[] = new PhutilRemarkupQuotesBlockRule();
// $blocks[] = new PhutilRemarkupReplyBlockRule();
// $blocks[] = new PhutilRemarkupHeaderBlockRule();
// $blocks[] = new PhutilRemarkupHorizontalRuleBlockRule();
// $blocks[] = new PhutilRemarkupCodeBlockRule();
// $blocks[] = new PhutilRemarkupLiteralBlockRule();
// $blocks[] = new PhutilRemarkupNoteBlockRule();
// $blocks[] = new PhutilRemarkupTableBlockRule();
// $blocks[] = new PhutilRemarkupSimpleTableBlockRule();
// $blocks[] = new PhutilRemarkupDefaultBlockRule();
// $blocks[] = new PhutilRemarkupListBlockRule();
// $blocks[] = new PhutilRemarkupInterpreterBlockRule();
//
// echo "preprocess03";
// foreach ($blocks as $block) {
// if (!($block instanceof PhutilRemarkupCodeBlockRule)) {
// $block->setMarkupRules($rules);
// }
// }
//
// echo "preprocess04";
// $engine->setBlockRules($blocks);
//
// return $engine;
// }
//
//}
//
//echo "aaaa";
//$test = new PhutilRemarkupEngineTestCase();
//$output = $test->testEngine();
namespace
tutorial
\
php
;
error_reporting
(
E_ALL
)
;
require_once
'/opt/thrift/lib/php/lib/Thrift/ClassLoader/ThriftClassLoader.php'
;
use
Thrift
\
ClassLoader
\
ThriftClassLoader
;
$GEN_DIR
=
'/private/prg/code/tests/php-cpp-integration-test/thrift/gen-php'
;
$loader
=
new
ThriftClassLoader
(
)
;
$loader
->
registerNamespace
(
'Thrift'
,
'/opt/thrift/lib/php/lib'
)
;
$loader
->
registerDefinition
(
'shared'
,
$GEN_DIR
)
;
$loader
->
registerDefinition
(
'tutorial'
,
$GEN_DIR
)
;
$loader
->
register
(
)
;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
/*
* This is not a stand-alone server. It should be run as a normal
* php web script (like through Apache's mod_php) or as a cgi script
* (like with the included runserver.py). You can connect to it with
* THttpClient in any language that supports it. The PHP tutorial client
* will work if you pass it the argument "--http".
*/
if
(
php_sapi_name
(
)
==
'cli'
)
{
ini_set
(
"display_errors"
,
"stderr"
)
;
}
use
Thrift
\
Protocol
\
TBinaryProtocol
;
use
Thrift
\
Transport
\
TPhpStream
;
use
Thrift
\
Transport
\
TBufferedTransport
;
class
CalculatorHandler
implements
\
tutorial
\
CalculatorIf
{
protected
$log
=
array
(
)
;
public
function
ping
(
)
{
error_log
(
"ping()"
)
;
}
public
function
add
(
$num1
,
$num2
)
{
error_log
(
"add({$num1}, {$num2})"
)
;
return
$num1
+
$num2
;
}
public
function
calculate
(
$logid
,
\
tutorial
\
Work
$w
)
{
error_log
(
"calculate({$logid}, {{$w->op}, {$w->num1}, {$w->num2}})"
)
;
switch
(
$w
->
op
)
{
case
\
tutorial
\
Operation
::
ADD
:
$val
=
$w
->
num1
+
$w
->
num2
;
break
;
case
\
tutorial
\
Operation
::
SUBTRACT
:
$val
=
$w
->
num1
-
$w
->
num2
;
break
;
case
\
tutorial
\
Operation
::
MULTIPLY
:
$val
=
$w
->
num1
*
$w
->
num2
;
break
;
case
\
tutorial
\
Operation
::
DIVIDE
:
if
(
$w
->
num2
==
0
)
{
$io
=
new
\
tutorial
\
InvalidOperation
(
)
;
$io
->
whatOp
=
$w
->
op
;
$io
->
why
=
"Cannot divide by 0"
;
throw
$io
;
}
$val
=
$w
->
num1
/
$w
->
num2
;
break
;
default
:
$io
=
new
\
tutorial
\
InvalidOperation
(
)
;
$io
->
whatOp
=
$w
->
op
;
$io
->
why
=
"Invalid Operation"
;
throw
$io
;
}
$log
=
new
\
shared
\
SharedStruct
(
)
;
$log
->
key
=
$logid
;
$log
->
value
=
(string)
$val
;
$this
->
log
[
$logid
]
=
$log
;
return
$val
;
}
public
function
getStruct
(
$key
)
{
error_log
(
"getStruct({$key})"
)
;
// This actually doesn't work because the PHP interpreter is
// restarted for every request.
//return $this->log[$key];
return
new
\
shared
\
SharedStruct
(
array
(
"key"
=>
$key
,
"value"
=>
"PHP is stateless!"
)
)
;
}
public
function
zip
(
)
{
error_log
(
"zip()"
)
;
}
}
;
header
(
'Content-Type'
,
'application/x-thrift'
)
;
if
(
php_sapi_name
(
)
==
'cli'
)
{
echo
"\r\n"
;
}
$handler
=
new
CalculatorHandler
(
)
;
$processor
=
new
\
tutorial
\
CalculatorProcessor
(
$handler
)
;
//boost::shared_ptr<TTransport> socket(new TSocket("localhost", 9090));
// boost::shared_ptr<TTransport> transport(new TBufferedTransport());
$transport
=
new
TBufferedTransport
(
new
\
Thrift
\
Transport
\
TSocketServer
(
'unix:///tmp/mysock3'
)
)
;
$protocol
=
new
TBinaryProtocol
(
$transport
,
true
,
true
)
;
$transport
->
open
(
)
;
for
(
;
;
)
{
$processor
->
process
(
$protocol
,
$protocol
)
;
}
$transport
->
close
(
)
;
Event Timeline
Log In to Comment